まつもと ゆきひろです

In message "[ruby-dev:1522] Re: SizedQueue and some question"
    on 98/02/24, 石塚圭樹 <keiju / rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|>|SizedQueueで途中で max size が帰られると良いと思ったんですが...

|小さくする時は, @queのサイズがmaxより小さくなるまでスレッドには待って
|もらえば良いんじゃないですかね? 一時的には@queサイズがmaxよりも大きく
|なってしまいますが, しょうがないってことで...

まあ,それでもよいでしょう,多分.

|以下の定義はどうでしょう? 待っているスレッドは走り出せば必ず@queにpush
|しますので...
|
|  def max=(max)
|    if @max <= max
|      @max = max
|    else
|      Thread.critical = TRUE
|      diff = max - @max
|      @max = max
|      diff.times do
|	t = @queue_wait.shift
|	t.run if t
|      end
       Thread.critical = FALSE
|    end
|  end


Thread.critical = FALSEが必要ですね.

|なるほど. 了解しました. そうすると, SizedQueueのようにサブクラスを作っ
|たりする時は気をつけないといけないですね.

そうですね.
                                まつもと ゆきひろ /:|)