From: Shin'ya Adzumi Date: 2001-06-12T03:56:43+09:00 Subject: [ruby-list:30196] Re: 呼び出し元のクラスを知る方法? あづみです。 nobu.nakada@nifty.ne.jp wrote: > それだと Thread.current が queue の所属する Thread かどうかと > いう問題であって、呼出側のクラスは関係ないように思えます。 クラス名はインデックスに使おうかと思っていました。 各スレッドごとに一つクラスを作っていたので。 定数とか宣言するのが面倒だっただけで実際全然関係ないですね^^; # やっぱ横着しすぎか^^; > どこから呼ばれたかによって動作を変えるライブラリというのは、 > 少々不思議な気がしますが。 そう言われると確かに。 ちょっと考えてみたんですが、こういうクラスだとまだ普通(?)でしょ うか? require 'thread' class MailQueue @@queue = Hash::new def make_queue(idx) @@queue[idx] = Queue::new unless @@queue.key? idx return self,@@queue[idx] end def push(idx,data) if @@queue.key? idx then @@queue[idx].push data else raise IndexError end end end th1 = Thread::new{ s,r = MailQueue::new.make_queue('class1') mail = r.pop; puts mail; s.push 'class2','ok' } th2 = Thread::new{ s,r = MailQueue::new.make_queue('class2') s.push 'class1','ok?'; mail = r.pop; puts mail } while(th2.alive?); end 安積伸弥 adzumi@denpa.org