Quay lại thư viện câu hỏi
.net Middle

Sự khác biệt giữa Value Task và Task trong .NET là gì? Khi nào việc sử dụng Value Task mang lại lợi ích về hiệu năng?

Task vs ValueTask

  • Task là kiểu tham chiếu (Reference Type), luôn được cấp phát trên Heap, gây áp lực lên Garbage Collection (GC).
  • ValueTask là kiểu giá trị (Struct), giúp tránh cấp phát bộ nhớ nếu kết quả của tác vụ đã có sẵn (ví dụ: dữ liệu đã nằm trong Cache).

Khi nào nên dùng ValueTask?

  • Khi phương thức thường xuyên trả về kết quả ngay lập tức (synchronous path).
  • Trong các thư viện hiệu năng cao hoặc các vòng lặp xử lý hàng triệu request.

Lưu ý quan trọng:

  • Không được await một ValueTask nhiều lần.
  • Không được gọi .Result hoặc .Wait() trên một ValueTask chưa hoàn thành.

Lưu ý thực chiến: Chỉ chuyển sang dùng ValueTask khi đã đo đạc (Profiling) thấy rằng việc cấp phát Task đang gây ra vấn đề về bộ nhớ hoặc áp lực GC quá lớn.

Luyện tập câu hỏi này trong chế độ đếm ngược mô phỏng phỏng vấn thật:
Phòng Luyện Tập
Khóa học Chuyên sâu Chủ đề .net

Làm Chủ Phỏng Vấn & Nâng Cao Trình Độ Chuyên Nghiệp

Hệ thống khóa học thực chiến chuẩn Enterprise giúp bạn tự tin chinh phục mọi kỳ phỏng vấn kỹ thuật và thăng tiến thu nhập.

Tải Tuyển Tập 100+ Câu Hỏi Phỏng Vấn Chuyên Sâu (PDF)

Bộ tài liệu chuẩn Senior do Unicode Academy tuyển chọn & biên soạn, hỗ trợ tải về định dạng PDF chuẩn in ấn.

High-Ticket Mentoring
Cần Mentor Phỏng Vấn Thử 1-1 & Tối Ưu CV?

Mô phỏng phỏng vấn kỹ thuật thực tế 1-1 qua Google Meet, nhận xét chi tiết điểm mạnh/yếu và sửa CV trực tiếp cùng giảng viên Unicode.

AI Resume Scanner
Kiểm Tra CV Chuẩn ATS Miễn Phí

Tải CV của bạn lên để hệ thống AI rà soát từ khóa kỹ năng, định dạng và tính điểm chuẩn nhà tuyển dụng.

vừa nâng cấp PRO khóa 1 phút trước   Tìm hiểu khóa học