[過去ログ] マルチスレッドプログラミング相談室 その8 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
747
(3): 2011/10/19(水)08:42 AAS
メモリバリアとか難しすぎて頭おかしくなりそう

atomic_int a = 0, b = 0;

//thread1
a.store_acquire(1);
int x = b.load_release();

//thread2
b.store_acquire(1);
int y = a.load_release();

これでx == 0 && y == 0が真になることがあるという話なんだけど頭の中でどう考えてもならない
いったいどういうカラクリでx,yが同時に0になるの?
748: 2011/10/19(水)09:23 AAS
>>747
正しくはstore_releaseとload_acquireね。
store & acquire とか、load & release とかいう組み合わせはない。
749: 2011/10/19(水)13:56 AAS
>>747
他のスレッドに値が反映されるまでラグがあると考えればいいよ
750
(1): 2011/10/22(土)16:08 AAS
>>747
atomic_int a = 0, b = 0;
//thread1
a.store_release(1);
int x = b.load_acquire();

//thread2
b.store_release(1);
int y = a.load_acquire();

だとすると、
load_acquire()はstore_release()の前に移動できる。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s