2016-05-30 20 views
1

2つのスレッドAとBはvolatile int iを共有します。gcc:__sync_lock_test_and_set VS。 =揮発性変数を持つ演算子

スレッドAの増分このようii = 15;__sync_fetch_and_add(&i, 1);

スレッドBは、このような任意の値Vにiを設定します。

私の質問:このような使用法の場合、の演算子で直接的な影響ではなく、__sync_lock_test_and_set(&i, 15);を使用する必要がありますか?

「はい」の場合、__sync_lock_releaseはtest_and_setの直後に必須ですか?

ENV:GCC 4.1.2、CentOSの5.11 32ビット、ノーC++ 11

答えて

0

あなたが同期機能を使用しない場合は、スレッドAとB 間あたりとしてiのためのデータ競合があります__sync_lock_test_and_set__sync_lock_releaseの定義の場合は、sync_lockの使用後にreleaseを使用する必要があります。

for ref

関連する問題