Mutexでは、deadlocksやpriority inversionsが発生するが、DragonFly BSDではSerializing toeknという仕組みを採用して、それを回避している。
簡単に言うと、「lock中のスレッドがsleepする場合、lockが解除される(他のスレッドがlockできる)」という物。
注意点は、
・sleepから起きた時に、lockしていたはずのリソースが変更されている可能性がある
メリットは、
・コードがかなりシンプルになる。
目からウロコ。すごいな、これ。
wikipediaの解説
Matt Dillionによる解説スレッド
Mutexと比較してのメリットがよくわかるメール
0 件のコメント:
コメントを投稿