[過去ログ]
マルチスレッドプログラミング相談室 その8 (1001レス)
マルチスレッドプログラミング相談室 その8 http://peace.5ch.net/test/read.cgi/tech/1253521167/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
112: デフォルトの名無しさん [sage] 2009/10/01(木) 10:15:16 Win32のCriticalSectionの激速の理由は プロセッサを判定して、可能ならばunlockにmovを使ってバスロックを避けているから と俺は勝手に想像している。 http://peace.5ch.net/test/read.cgi/tech/1253521167/112
114: 234 [sage] 2009/10/01(木) 20:17:23 >>112 コンテキストスイッチが無いときはカーネルに入らずに、単にロックカウントをアップしてるだけだからだよ。 http://peace.5ch.net/test/read.cgi/tech/1253521167/114
128: デフォルトの名無しさん [sage] 2009/10/02(金) 01:03:20 実行してみなきゃ結果の意味するところもわからんからね。 まあ俺は>>112>>115>>117とかだが。 関係ないが、stdcallとか、全然意味なかったな。 全部展開されてるし。 しかも、Enter/Leaveもレジスタにコピーされてレジスタ間接コールになってる。 http://peace.5ch.net/test/read.cgi/tech/1253521167/128
130: 128 [sage] 2009/10/02(金) 01:27:59 まあ一応、俺の手元での数字を出しとく。 rdtscで計ってるので、別プロセスに割り込まれない限り 何回やっても似たような数字になる。 18065 clocks at CriticalSection 39098 clocks at CAS 13700 clocks at CAS(lockプリフィックス無し) 19025 clocks at CAS(movでunlock) 1番上が、単純にCriticalSectionをEnter/Leaveしたもの。 次が、「教科書通り」のCAS(lock+cmpxchg)を使ったスピンの取得と解放。 おそらく、>>111もこれに似たコード(取れない時のループは無し)を書いたと思われる。 3番目は、上のコードから、バスロックを除いたもの。バスロックのコストを示すため。 4番目が、>>112に述べた、unlock時のバスロックを避けるようにしたもの。 結論としては、>>112の推測が確信に変わっただけ。 http://peace.5ch.net/test/read.cgi/tech/1253521167/130
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.029s