マルチスレッドプログラミング相談室 その5
■ このスレッドは過去ログ倉庫に格納されています
0290デフォルトの名無しさん
2007/03/04(日) 17:17:43メモリバリアだから必要ないという認識では、ちょっと違うね。
関数呼び出しをまたいでグローバル変数をキャッシュできないから
volatileが必要ないというのが本質。
変数をレジスタ等にキャッシュしていないからこそ、メモリバリアが有効になる。
仮にlockやunlockをインライン展開できるようなコードで実装できたとすると
while() { lock(); i = i + 1; unlock(); } はvolatileが無いと危険かもしれない。
■ このスレッドは過去ログ倉庫に格納されています