From: matz@... (Yukihiro Matsumoto) Date: 1998-02-24T17:08:09+09:00 Subject: [ruby-dev:1521] Re: SizedQueue and some question まつもと ゆきひろです スレッド周りは私も分かんないことが多いんです. In message "[ruby-dev:1520] SizedQueue and some question" on 98/02/24, Keiju ISHITSUKA 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はネストすることはないはず(というかそうするべ き)なので,現状で良いと思います. まつもと ゆきひろ /:|)