[過去ログ] マルチスレッドプログラミング相談室 その3 (978レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
298(3): 05/02/08 13:51 AAS
>>294
InterlockedXXXはもちろんOKでそ。
基本的にはマルチプロセッサを考えない場合にはスレッド間でのメモリ内容の
同期化は考えなくても良いので、volatile とか _ReadWriteBarriar (VCね)とかで
テキトーに済ませてしまっても問題ない。
でも今時「マルチプロセッサではデッドロック起こします」なんてプログラムは
書かないことが多いんでは?なので他のスレッドが書いたデータを読むとき
には、適当にメモリバリアになる処理を入れておくべき(ドライバ書いているとき
には、リングバッファ - メモリモデルの問題さえなければ、writerとreaderは
並行して動作しうる - とかではまることがある)。
あとJava VMの場合は新し目のJSR-000133 に準拠したものだと、
同じvolatile変数へアクセスするコンテキスト間ではアクセス時点で同期化が
成されるみたいだけど、これはまだ一般的じゃないと思う。
299(1): 05/02/08 13:56 AAS
>>298
コンパイラの最適化によるトラブル@シングルプロセッサは無視ですか?
303(1): 05/02/08 16:28 AAS
>>299
既出の、
Javaの場合普通JSR-133を仮定しないで同期化でメモリバリアするから問題起きない。
サーバ側などVM限定で良くて高速処理が必要なら、JSR-133を仮定して高速な実装を使うこともアリ。
C/C++ならvolatile とかVCの_ReadWriteBarrier(>>298ではスペルミスしてました)みたいなものでテキトーに。
(インラインでアセンブラ書ける処理系なら、大抵はメモリへの配置と値のストアを強制できると思う)
参考:外部リンク[asp]:msdn.microsoft.com
ってようなことの他に何か最適化によるトラブルがあったら教えてください。
313(3): 05/02/08 18:38 AAS
>>308
308で言ってることは正しい指摘だと思うんだけど、それはともかくとして
>>298
>コンパイラの最適化によるトラブル@シングルプロセッサは無視ですか?
これの例を聞いてみたわけだけど。エイリアス関係ならvolatile指定でOKだし・・・
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s