1. ホーム
  2. multithreading

[解決済み] Win32 InterlockedExchange関数はどのような場合に使用するのですか?

2022-02-15 08:26:12

質問

という関数に出会いました。 インターロケッドエクスチェンジ で、この関数をいつ使えばいいのか悩んでいました。私の意見では、x86プロセッサで32ビットの値を設定する場合は、常にアトミックであるべきだと思いますが?
この関数を使いたい場合、新しい値が古い値に依存しない(インクリメント操作ではない)ことが条件です。 このメソッドが必須となる例を教えてください (InterlockedCompareExchange を探しているわけではありません)。

どのように解決するのですか?

マルチプロセッサやマルチコアマシンでは、各コアが独自のキャッシュを持つため、各コアはシステムメモリの内容についてそれぞれ異なる可能性のある「見方」をしています。

スレッド同期機構は、コア間の同期を取るためのものです。 http://blogs.msdn.com/oldnewthing/archive/2008/10/03/8969397.aspx または、acquire and release semanticsでググってください。