From: keiju@... (Keiju ISHITSUKA) Date: 1998-02-24T16:59:38+09:00 Subject: [ruby-dev:1520] SizedQueue and some question けいじゅ@日本ラショナルソフトウェアです. SizedQueueで途中で max size が帰られると良いと思ったんですが... class SizedQueueThread.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つこれは質問かな? class Queue def pop non_block=FALSE item = nil until item Thread.critical = TRUE if @que.length == 0 if non_block Thread.critical = FALSE raise ThreadError, "queue empty" end @waiting.push Thread.current Thread.stop else item = @que.shift end end Thread.critical = FALSE item end end この様に, Thread.critical = TRUE して, 最後に Thread.critical = FALSE していますが, back, Thread.critical = Thread.critical, TRUE Thread.critical = back の組合せの方が良くないですか? それとも, そういう必要はないんですかね? __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---