From: KOSAKI Motohiro Date: 2011-01-25T03:40:51+09:00 Subject: [ruby-dev:43093] Re: pthread_cond を用いたConditionVariable 小崎@便乗です > けいじゅ@いしつかです. > > POSIX thread の condition variable を直接用いて ConditionVariable を作っ > てみました. とはいえ, まだまだ完全ではないのですが... > > ConditionVariableを用いたときのThreadのスイッチのコストは > ConditionVariableの実行コスト分足されるので, 現行のConditonVariableで > はあまりパフォーマンスが良くないと思い作成しました. > > パフォーマンスの測定はなかなか難しいのですが, 2から4倍ぐらいにはなって > いるようです. > > 実装についてですが, Thread等の仕組みが十分に分かっていないので, 私だけ > では完全なものにするのは難しいです. 良く知っていらっしゃる方々に完全な > ものにして, Ruby に取り込んでいただければと思っています. パフォーマンスはさておくとしても、今のCVはCtrl-Cセーフじゃないというかなり致命的な弱点があるので いつかはC実装に直さないといけないという認識でした。すばらしいです。 で、ちょっと手伝おうと思って、昔の書き散らかしからCV関係のテストコードをいくつかrubyに翻訳して testディレクトリにぶち込んでいたりしていたのですが(すいません途中で気力がつきたのでまだまだ不十分です) 一点、テストケースの作成に困難があることに気がつきました。 今のRubyだとdeadlockするのが正しい挙動のときに assert(deadlockすること) と書く方法がない気がするのですが この認識はあってますかね?