前田です。 In message "[ruby-list:6845] Re: Mutex/ConditionVariable/Queue" Kazuhisa YANAGAWA <katze / yuba.is.uec.ac.jp> wrote: |> 条件変数を追加するのは継承のせいではなくて違う条件で待つためですよね? | | つまり, 「継承によって増えた同期条件に関する同期コードを実装するため | に, 継承もとのメソッドを再定義する必要がある」わけです. | | # SizedQueue を Queue を継承して作った場合, push も pop も再定義しな | # ければならない....書き方が悪かったですね. あ、条件変数自体は関係なくてRubyの継承システムの話だったんですね。 | で, 「ACT++ 風の behavior abstraction」で何がうれしいかと言うと, (snip) | という感じで条件が増えても同期コード(next_behavior)だけ書き直せば | 済むという所にあるわけです. なんとなくCLOSのmethod combinationみたいですね。 superを使う方法のわかりやすさも捨てがたいので、一概にどちらがよい とは言えないような気もします。 |> lockではmutex.owner==Thread.currentな時はカウンタをインクリメント |> して、unlockではカウンタが0になるまでロックを解放しない、というこ |> とをしたいだけなのですが。 | | で, スレッドが分岐しないのならこれで何の問題もない, と. ということであまり気にしないことにします(^^; -- 前田 修吾