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
「悩みに悩んで墓穴を掘るよりも
    何も考えずに選んで墓穴を掘ったほうがお得じゃない」
「....ちょっと違うような....」