InterlockedCompareExchangeRelease()
との違いは何InterlockedCompareExchangeAcquire()
ですか?
WIN32 APIを使用して同期関数を学習しようとすると、名前が異なる2つの関数がありますが、同じことをしているようです。
LONG __cdecl InterlockedCompareExchangeRelease(
__inout LONG volatile *Destination,
__in LONG Exchange,
__in LONG Comparand
);
と
LONG __cdecl InterlockedCompareExchangeAcquire(
__inout LONG volatile *Destination,
__in LONG Exchange,
__in LONG Comparand
);
私はMSDNをチェックします、それはそれらの関数が次のとおりであると言います:
指定された値に対してアトミックな比較交換操作を実行します。この関数は、指定された2つの32ビット値を比較し、比較の結果に基づいて別の32ビット値と交換します。
しかし、のためInterlockedCompareExchangeAcquire()
に、
この操作は、メモリアクセスの取得セマンティクスを使用して実行されます。
とのためInterlockedCompareExchangeRelease()
に、
交換は、リリースメモリアクセスセマンティクスを使用して実行されます。
ですから、これら2つの機能の違いに興味があります。いつメモリアクセスセマンティクスを取得するか、メモリアクセスセマンティクスを解放するか。例はありますか?
ありがとう!