- Win32API質問箱 Build121 [転載禁止]©2ch.net
507 :デフォルトの名無しさん[sage]:2015/11/01(日) 00:00:44.95 ID:a/KTrDXN - そんなにあいてしてほしい?
|
- C++相談室 part120 [転載禁止]©2ch.net
302 :デフォルトの名無しさん[sage]:2015/11/01(日) 00:12:43.03 ID:a/KTrDXN - 本人じゃなくても考えれば分る事
ある機能上纏まった扱いになるメモリ領域 有体に言えば排他処理される単位のメモリ領域 それを複数のスレッドから同時にアクセスするから色々な問題が出てくる しかし、先にも書いたが、排他処理されるわけだから 実際には複数のスレッドから同時にアクセスされることはない だから問題は起こらない もし起こるとすれば排他処理を忘れてバグってるとき
|
- C++相談室 part120 [転載禁止]©2ch.net
304 :デフォルトの名無しさん[sage]:2015/11/01(日) 00:23:20.47 ID:a/KTrDXN - 問題は起こらない、これ以上話し合う必要は無い
|
- HSP総合スレ【part 8】 [転載禁止]©2ch.net
805 :デフォルトの名無しさん[sage]:2015/11/01(日) 11:39:04.48 ID:a/KTrDXN - HSP公式掲示板でやれ
|
- C++相談室 part120 [転載禁止]©2ch.net
313 :デフォルトの名無しさん[sage]:2015/11/01(日) 11:51:54.14 ID:a/KTrDXN - >>305
いいや、守れる 例えばWindowsだと排他制御はEnterCriticalsectionで行うことが多いだろう EnterCriticalsectionの例で考えると EnterCriticalsection( &a ); //A EnterCriticalsection( &b ); //B こういう呼び出しがあって、AとBの呼び出し順がコンパイラの最適化で入れ替わる事はありえるか? そんなことしたら即デッドロック、そんなおばかなコンパイラはありえない 他にも EnterCriticalsection( &a ); //A b=1; //B こういうコードがあったとして、AとBが入れ替わる事はありえるか? そんなことしたらBのコードが保護されなくなる、そんな最適化は常識的にありえないだろう つまり、排他制御で囲まれている部分を飛び越えてのコードの入れ替えは起こるわけがないし、 排他制御の中のコードは一つのスレッドからしかアクセスされないので、単に排他制御にだけ気を使っとけば良い
|
- C++相談室 part120 [転載禁止]©2ch.net
314 :デフォルトの名無しさん[sage]:2015/11/01(日) 11:55:38.29 ID:a/KTrDXN - 排他制御だけ適切にしとけば
最適化によるコードの入れ替えやらアウトオブオーダーやらCPUキャッシュやらの 問題はすべて解決するし、そういう風にCPUもコンパイラも作って有るので とにかく排他制御だけしっかりやっとけってこった それ以上の議論は必要ない
|
- C++相談室 part120 [転載禁止]©2ch.net
315 :デフォルトの名無しさん[sage]:2015/11/01(日) 12:10:45.61 ID:a/KTrDXN - コンパイラの最適化でコードの入れ替えが〜で問題になっていたのは
スレッドAで何か変数を読み書きをしていて スレッドBからそれを読んだら変数の書き換えのタイミングが意図しないものになっていた というものであるが、 言うまでもないが、複数のスレッドから同じ領域を読み書きしている状況は排他制御が壊れてバグっている 例外的にノンブロッキングなキューなどで意図的にそういうことをすることもあるだろうが、通常は狂った状態 バグった時の動作について議論しても意味がない、そんな暇があったらしっかり排他制御しろ 排他制御さえしておけば問題ないし、実際、世の中のプログラムはそうすることで コンパイラの最適化でのコードの入れ替えなぞ気にする事もなく普通に動いているし そうなるようにコンパイラもCPUもちゃ〜んと作ってある 議論の無駄
|
- C++相談室 part120 [転載禁止]©2ch.net
318 :デフォルトの名無しさん[sage]:2015/11/01(日) 12:17:56.33 ID:a/KTrDXN - お前もう議論する気もなくなるぐらいバカだな
コンパイラは、入れ替えてよいかの判断材料が何もなければ、ただ単に入れ替えない あたりまえ
|
- C++相談室 part120 [転載禁止]©2ch.net
320 :デフォルトの名無しさん[sage]:2015/11/01(日) 12:20:24.59 ID:a/KTrDXN - constなんかキャストしたら外せるし、コンパイラはそんなことを最適化の判断材料にはしない
ここは釣堀かよ
|
- C++相談室 part120 [転載禁止]©2ch.net
323 :デフォルトの名無しさん[sage]:2015/11/01(日) 12:23:34.31 ID:a/KTrDXN - const int value = 1;
みたいなのは確かに最適化に使われるconstかもね
|
- C++相談室 part120 [転載禁止]©2ch.net
346 :デフォルトの名無しさん[sage]:2015/11/01(日) 15:55:39.84 ID:a/KTrDXN - もはや面倒だからよんでもないんだけど
排他処理さえしっかり出来ていれば問題ないよ
|
- 【Delphi】Embarcaderoオッチャ その31【C++ビルダ】 [転載禁止]©2ch.net
172 :デフォルトの名無しさん[sage]:2015/11/01(日) 17:43:20.82 ID:a/KTrDXN - 当然あるけど、Delphi使ってれば良いよ
|