- 130 名前:128 mailto: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の推測が確信に変わっただけ。
|

|