sự khác biệt giữa InterlockedCompareExchangeRelease()
và InterlockedCompareExchangeAcquire()
là gì?sự khác biệt giữa InterlockedCompareExchange phát hành (là gì) và Acquire()?
Khi tôi cố gắng tìm hiểu những chức năng đồng bộ hóa với Win32 API, tôi thấy có hai chức năng đặt tên khác nhau nhưng dường như làm điều tương tự:
LONG __cdecl InterlockedCompareExchangeRelease(
__inout LONG volatile *Destination,
__in LONG Exchange,
__in LONG Comparand
);
và
LONG __cdecl InterlockedCompareExchangeAcquire(
__inout LONG volatile *Destination,
__in LONG Exchange,
__in LONG Comparand
);
tôi kiểm tra MSDN, nó cho biết các chức năng đó là:
Thực hiện phép so sánh và trao đổi nguyên tử trên quy định giá trị. Chức năng so sánh hai giá trị 32-bit định và trao đổi với một giá trị 32-bit dựa trên kết quả của việc so sánh .
nhưng đối với InterlockedCompareExchangeAcquire()
,
Các hoạt động được thực hiện với ngữ nghĩa truy cập bộ nhớ đạt được.
và cho InterlockedCompareExchangeRelease()
,
Việc trao đổi được thực hiện với ngữ nghĩa truy cập bộ nhớ phát hành.
Vì vậy, tôi tò mò về sự khác biệt giữa hai hàm này. Khi sử dụng ngữ nghĩa Có được truy cập bộ nhớ hoặc phát hành truy cập bộ nhớ ngữ nghĩa? Có ví dụ nào không?
Cảm ơn!