あづみです。

いろんな意見があってかなり参考になります。ありがとうございます。

Tacos wrote:
> (最終目的は別にして)当初ねらってたのはこんなワザぢゃなくて??

えっと、当初目的はそんな高尚なものではなくて(汗;
単に私が非常に横着なだけで、最初の目的は、

  * 自分の送り先を知っているメール用オブジェクトを作る
  * sendmail(mail) "だけ"でメールが送れる
  * mail = recvmail "だけ"でメールが受けとれる

ようなものが作れないものか、ただそれだけなんです。

というわけで MailQueue モジュールを作って、これに全てスレッドの
Queue を覚えさせて、送受信用のメソッドを追加すれば良いやと思った
のですが、このままだと受信用に自分がどこのスレッドに属しているの
か教えないといけない。引数で与えるのは「邪魔臭い」ぞと(笑

# どうせなら他のスレッドからは絶対に受信できないようにしちゃえ
# というのは単なるこだわりです^^;

ちなみにクラス名にこだわった理由は別にありまして。各スレッドは

  Thread::new{ ReadThread::new }
  Thread::new{ WriteThread::new }
  Thread::new{ ControlThread::new }
  ...

という風に起動されてまして、各クラスはそれぞれ一つのファイルに
記述されています。そして、メインスレッドがそのファイルの変更を
検知した場合、

  1. 該当するスレッドに終了するよう指示する
  2. ファイルを load する
  3. スレッド立ち上げ直し

ということがやってみたくて^^; (まだ実装してないのでできるのか
どうか分からないですけれど)
Thread::current.id だと変わっちゃうので困る。id 変わったよとい
う事を知らせれば良いのですがそれも「邪魔臭い」。グローバル変数
を使うのは嫌。どうせクラス名は変わらんのだからそれが利用できた
らいいんじゃなかろうか?

こんな次第でございます^^;;;;

# なんか後半の理由の方が大きいな

安積伸弥
adzumi / denpa.org