まつもと ゆきひろです

スレッド周りは私も分かんないことが多いんです.

In message "[ruby-dev:1520] SizedQueue and some question"
    on 98/02/24, Keiju ISHITSUKA <keiju / rational.com> writes:

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

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

んーと,石塚さんの定義ではまずいように思います.そもそもmax
を大きくする方はともかく,maxを小さくする時の挙動って定義で
きないような気が….

|class SizedQueue
|  def push(obj)
|#-->Thread.critical = TRUE
|    while @que.length >= @max
|      @queue_wait.push Thread.current
|      Thread.stop
|    end
|    super
|  end
|
|  def pop(*args)
|#-->Thread.critical = TRUE
|    if @que.length < @max
|      t = @queue_wait.shift
|      t.run if t
|    end
|    pop = super
|    pop
|  end
|end
|
|一応, ``#-->Thread.critical = TRUE'' があった方がよかないですか? 

なくても良いような気がするんですけどねえ.あっても邪魔になら
ないんで追加しておきますか.

|あと, もう1つこれは質問かな?

|  back, Thread.critical = Thread.critical, TRUE
|
|  Thread.critical = back
|
|の組合せの方が良くないですか? それとも, そういう必要はないんですかね?

Thread.criticalはネストすることはないはず(というかそうするべ
き)なので,現状で良いと思います.

                                まつもと ゆきひろ /:|)