From: SASADA Koichi Date: 2010-05-06T01:55:23+09:00 Subject: [ruby-dev:41174] Re: [Feature #3251] allow to unlock mutex locked by another thread  ささだです. (2010/05/06 1:24), Yusuke Endoh wrote:: > Feature #3251: allow to unlock mutex locked by another thread > http://redmine.ruby-lang.org/issues/show/3251 > > 起票者: Yusuke Endoh > ステータス: Open, 優先度: Normal > 担当者: Koichi Sasada, カテゴリ: core, Target version: 1.9.x > > 遠藤です。 > > 現状では mutex は lock したスレッドからしか unlock できませんが、 > これを許可するようにしませんか。動機は 2 つあります。 > > 1) Python の condition variable が mutex を別スレッドから unlock > することで実装されている、のが真似できる > 2) Thread#raise を race condition なしに使えるようになる (気がする)  Python はなぜ Mutex を他から解放できるのか,よくわからないのですが, http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%86%E3%83%83%E3%82%AF%E3%82%B9 > 狭義には、ミューテックスの場合にそれをロック(P操作)したタスクのみがア ンロック(V操作)できるのに対して、セマフォではその様な制約はない。 ということで,Mutex という名前だと,他から解放出来ない,というニュアンス が含まれてるんじゃないかなぁ,という感覚があります.  他のシステムだと,セマフォがあるからいいじゃん,ということなのかもしれ ず,じゃぁ Ruby にもセマフォを入れないといけない,ということかもしれません.  「感覚」なので,根拠のある話ではないんですが,用語の混乱を避けるために も,「便利そうだから入れちゃえ」というのはまずいんではないかと愚考する次 第です.Fiber とかてきとーに入れちゃった人間が言うのもなんですが.  そもそも,Mutex は critical section を作るためのものなの で,lock/unlock は使わないで欲しいなぁ,という気がします.な ら,CriticalSection クラスでも作るべきなのかな. -- // SASADA Koichi at atdot dot net