7

アトミックまたはアトミックまたはのようなものはあり|=ますか?いいえの場合、スレッドセーフにする必要がある変数にビットを設定するための推奨される手法は何ですか? (私はロックを避けています)

4

4 に答える 4

7

C++03 ではそのようなことはありませんが、ベンダー固有の機能を使用できます。たとえばInterlockedOr、Windows で使用できます。C++0x では、 を使用できますatomic_fetch_or

アトミック操作にもロックが必要であることに注意してください。ただし、ハードウェア レベルではまだ高価です。

于 2011-06-25T17:06:05.890 に答える
4

アトミックな比較とスワップ (CAS) を使用すると、必要になる可能性が高い場所ならどこでも利用でき、ほぼすべての操作のアトミック バージョンを作成できます。

于 2011-06-25T17:49:44.827 に答える
3

_InterlockedOr本質を見てください。それはあなたが得ることができる最速です。

于 2011-06-25T17:08:38.337 に答える
1

現在の C++ 標準ではそのような考えはありませんが、おそらく秋にリリースされる C++11 にはあるでしょう。参照: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1401.pdf

今後の C++ 標準の新しいスレッド機能の一部をサポートするコンパイラが既に存在するかどうかはわかりません。それ以外の場合は、回避策を講じる必要があります (たとえば Boost を使用)。

于 2011-06-25T17:10:15.690 に答える