Câu hỏi

Từ khóa volatile trong C# được sử dụng để làm gì?

Câu trả lời

Trong C#, từ khóa volatile được sử dụng để chỉ định rằng một trường (field) có thể được sửa đổi bởi nhiều luồng (threads) mà không cần sử dụng các cơ chế đồng bộ hóa như lock hoặc Mutex. Khi một trường được khai báo là volatile, compiler và runtime sẽ đảm bảo rằng các đọc và ghi giá trị của trường đó sẽ được thực hiện trực tiếp trên bộ nhớ chính (main memory) và không được lưu trong cache của CPU, đảm bảo rằng giá trị mới nhất của trường luôn được sử dụng bởi tất cả các luồng.

Đặc điểm của volatile:

  • Visibility: Đảm bảo rằng giá trị của trường volatile luôn được cập nhật và nhìn thấy một cách nhất quán giữa các luồng.
  • Không có Reordering: Ngăn chặn compiler và CPU từ việc sắp xếp lại thứ tự của các lệnh đọc và ghi để tối ưu hóa hiệu suất, điều này có thể gây ra các vấn đề trong đa luồng.
  • Không đảm bảo Atomicity: volatile không đảm bảo rằng các hoạt động đọc và ghi là atomic, nghĩa là các hoạt động trên các kiểu dữ liệu lớn hơn kích thước từ máy (machine word size), như double hoặc long, có thể không an toàn về mặt luồng.

Ví dụ sử dụng `vola...

Bạn cần đăng nhập để xem
middle

middle

Gợi ý câu hỏi phỏng vấn

middle

Mảng jagged trong C# là gì và khi nào thì nên sử dụng mảng jagged thay vì mảng nhiều chiều?

senior

Constructor Chaining trong C# là gì?

middle

Khi nào sử dụng ArrayList thay vì array[] trong C# là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào