In message <199802270237.CAA00362 / soleil.localnet.or.jp> shugo / po.aianet.ne.jp (Shugo Maeda) writes: > | SizedQueue の状態はやっぱり empty と full を別に持つものだと思う.... > | いや, 同じでも動けばいいんですけど. でも普通, 例に出て来る有界バッファ > | のコードでは状態を分けてあります. > > あれ、分けてありますよね? > emptyの時は@que_condでfullの時は@sized_que_condで待っています。 SizedQueue が Queue を継承していることを見落としてました. 確かに別に 待つことになりますね. > # 名前が悪いとか(^^; @empty_condと@full_condにするのかな。 たいがい, そんなもんですよね. それにしても inheritance anomaly の見本みたいなコードになってしまい ますね. やっぱり同期に関するコードは本来のメソッドコードに埋め込むべ きではない. # でないと同期コードの分だけそっくり継承先で再定義しなくてはならなく # なる....というのが inheritance anomaly. といっても Ruby でどうやったらうまく書けるのかは良くわかりませんが. > Mutexも二つあるのはネストができないせいです。 ....してるじゃないですか. 一つのスレッドの中で二つの Mutex#synchronize が呼ばれてると思いますが. # 意味が違う? ====================================================================== 柳川 @ 情報システム学研究科 . 電気通信大学 katze / yuba.is.uec.ac.jp February 27, 1998 「悩みに悩んで墓穴を掘るよりも 何も考えずに選んで墓穴を掘ったほうがお得じゃない」 「....ちょっと違うような....」