[#9445] thread.rb — m_seki@...

18 messages 2000/03/16
[#9446] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/17

[#9460] Re: thread.rb — m_seki@... 2000/03/21

[#9462] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/21

まつもと ゆきひろです

[#11281] Re: thread.rb — Masatoshi SEKI <m_seki@...> 2000/10/22

[#9498] timeout しない timeout — ARIMA Yasuhiro <fit0298@...>

有馬です。

20 messages 2000/03/26
[#9506] Re: timeout しない timeout — matz@... (Yukihiro Matsumoto) 2000/03/27

まつもと ゆきひろです

[#9509] Re: timeout しない timeout — gotoken@... (GOTO Kentaro) 2000/03/27

In message "[ruby-dev:9506] Re: timeout しない timeout"

[ruby-dev:9460] Re: thread.rb

From: m_seki@...
Date: 2000-03-21 03:40:26 UTC
List: ruby-dev #9460
咳といいます。

    matz> |またMutex, Queueでは@waitingの先頭のスレッドだけを run/wakeup 
    matz> |しますが、@waiting中のすべてのスレッドをwakeupしないとまずい
    matz> |局面がないですか。

    matz> 以前はそうだったんですが、結局Queueで値をとれたり、Mutexでロッ
    matz> クを確保できるのは1スレッドだけですから、先頭のひとつだけで
    matz> 良かろうと言う判断で今のようになってます。ただ、私、スレッド
    matz> 系はあまり得意でないので、まずいことがあれば教えてください。

自信がないのですが、
o どのスレッドも Thread.critical = false の時にはいつでもexitされる
  可能性があるとすると、
o Queue#push で wakeup されたスレッドが、Queue#pop の資源を
  獲得するループを抜け出る前にexitする可能性もありますよね。
o すると、Queueにデータが残ってるのに待ちのスレッドが残ることが
  あるような気がします。

それでQueue#pop見てたんですがわからないことが…。
Thread.critical = true にして Thread.stop すると
なにがおこるんですが!?
Thread.critical = falseに戻るのでしょうか?


In This Thread