けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :06811 ] the message: "[ruby-list:6811] Re:
Mutex/ConditionVariable/Queue ", on Feb/27 15:49(JST) Shugo Maeda
writes:

>前田です。

>|>|それもありますが. 本来必要のない実装がMutexに入り込んでいますよね. 
>|>たしかにMutexだけ使ってConditionVariableを使わない人にとっては
>|>必要ないですね。
>|>Mutexじゃなくて別のクラス名にした方がよいのかな...。
>|ですかねえ...
>
>考えてみたんですけどMixinにしようかなと思います。

つまり, 本家Mutexとは別クラスにするという話ですね?

>obj.extend(MonitorMixin) # monitorかmoniterかどっちでしたっけ?(^^;
>cond = obj.condition_variable # ConditionVariableを生成
>
>Thread.start {
>  obj.synchronize {
>    ...
>    cond.wait
>  }
>}
>
>...
>obj.synchronize {
>  ...
>  cond.signal
>}
>    
>これだとJavaと違って、ロックはリソースに統合されてますけど
>条件変数の方は複数にできますよね。

>synchronizeはネストできるようにしないと不便そうですね。

かもしれませんね. @ownerがあるのでそんなに難しくないですよね?

リクエスト:

1. extendだけでなく, includeでも使えるようにしてください.
2. ConditionVariable#wait

  while 条件
    cond.wait
  end

という使い方が多いのでしたら, イテレータもあるといいかも. 1.1b9からつ
かえる 

  cond.while{条件} or cond.until{条件}

がいいかな(^^;;;

# extendableにするという話でしたが, 私除経験からだと結構いろいろ対応し
# なくてはいけないので(Mutex_m/Sync_m)結構大きくなるかも, すると 
# thread.rbに統合するのは無理があるかも?

PS.  
Queue/SizedQueueの実装がずいぶん簡単になるなと感心してしまいました. 特
に, あんなに苦労したSizedQueue#max= があんなに簡単になったのは感動しま
した.

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---