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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
767
(3): 2011/10/23(日)22:09 AAS
>>764
//thread1
int v = a.load_acquire();
int x = b.load_acquire();
a.store_release(1);

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

リオーダーされてこうなったら全部0
768
(1): 2011/10/23(日)22:11 AAS
>>767
てきとーなこと書くなよ
769
(1): 768 2011/10/23(日)22:24 AAS
>>767
すまん勘違いしてた。同じa同士のloadとstoreはひっくり返るはずが無いと思ったが実際の動作ならそうなりえるよね。
771: 2011/10/23(日)23:19 AAS
>>767,769
同じスレッド上でのリオーダーの話と別のスレッドから見たときの順序の話がごちゃ混ぜになってないか?

a.store_release(1);
int v = a.load_acquire();//a.store_releaseとa.load_acquireは同じオブジェクトなのでリオーダーできない。
int x = b.load_acquire();//その結果b.load_acquireも上に移動できない。

しかしながらseq_cstじゃ無いので他のスレッドから見たときの順序が保障されないので x == 0 && y == 0 はありうる

これでいいんじゃね?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.181s*