linuxのロックの実装は聞いたことが無い…。僕の知ってるSolarisの話は2008年ごろの論文での情報なので、linuxもsolarisも共にもっと賢くなってるかもしれない。誰かコミッタのかた!!
2011-02-17 20:22:36@kumagi Linuxにコミッタという制度はない。Solarisにもないんじゃないかなぁ
2011-02-17 20:26:16Linuxでロックとかいわれても前提じょうけんがわからんと話がつづけようがない気がする
2011-02-17 20:35:07@kosaki55tea pthread_mutex_lockを行った場合にどうなるのかっていう所です…。競合してる場合としてない場合とで挙動が変わるのでしょうけれど…。
2011-02-17 20:39:20@kumagi いまのglibcだとpthread_mutex_lockはlock cmpxchgしてロックとれなかったらfutex wait してるだけ
2011-02-17 21:10:25@kosaki55tea 中身実質futexじゃないですか!それと何でcmpxchgなんですか?xchgでも同様の事が可能そうだと勝手に思ってるのですが…。
2011-02-17 21:11:54@kumagi lockなんてコード増やせば増やすほど遅くなるからじゃない?ロックでcmpxchgは常道だと思ってるのでなんでと聞かれても・・・
2011-02-17 21:14:51@kumagi 速くしたいならロックをいじるんじゃなくてデータ構造かえてロック競合を減らした方が効果的
2011-02-17 21:16:33@kosaki55tea うーん。スケーラビリティやキャッシュラインの取り合いを考慮すると優秀なものは実装が大きいんですが…。cmpxchgに関しては、僕がlockを調べたときにxchgを用いて説明されたのでそういうものなのだと勝手に思ってました。
2011-02-17 21:16:52@kumagi 優秀の定義がいるでしょう。予想される競合発生確率がわからないと最適化の方向が定まらない。あとfairnessいるかどうかとか
2011-02-17 21:19:37@kosaki55tea fairnessは必要なので待機スレッドをqueueで保持したほうが良いですし、それならついでに無駄なawake動作が削減できて性能的にもスケールするだろうな、と思ってます。
2011-02-17 21:23:10@kumagi futex内部にキューはありますよ。awake動作のためにどうせ一回はカーネルに入る必要有るんだからキューはユーザランドにあってもカーネル内にあってもかわらんと思うけど
2011-02-17 21:30:58