千田です。
午前休していたので慌てて目を通しています。

shugo> ||これはmonitor固有の実装になってしまうのですが、signal()とmutexの
shugo> リリースを
shugo> ||同時にやって呼び出し元がモニタから抜けることを意味します。
shugo> ||
shugo> ||意味はそういう意味なのですが実際の処理はwait()の最後のlockをやめ
shugo> てsignal側
shugo> ||ではunlockをやめます。これで無用なコンテキストスイッチが減ります。
shugo> |
shugo> |これはちょっと無理そうですね。
shugo> 
shugo> broadcastのことを考えてすぐ無理だと思ってしまったのですが、
shugo> うまく解決できるんでしょうか?
shugo> 

ええと、モニタでシグナルはブロックの最後にしか書けないという制限が生じるの
でConditionVariableの実装には合わないでしょう。

shugo> |# 私も納得していないんですが。
shugo> 
shugo> うーん、納得いきませんね(^^;
shugo> # [Howard,1976]というのを参照すれば納得できるのかな。

これもどうやらコンテキストスイッチしないから効率がよくなるということのよう
です。そのかわり(1)条件が変ってしまうかも知れない (2)Threadの実行順序が予
測困難になる という問題が出てきます。

 1456  02/26 Shugo Maeda    [ruby-list:6794] R 前田です。 eval.cを覗いてみたので
 1457  02/26 Shugo Maeda    [ruby-list:6795] R 前田です。 Mutx.instance_methods 
 1458  02/27 石塚圭樹       [ruby-list:6796] R けいじゅ@日本ラショナルソフトウ 
 1461  02/27 Kazuhisa YANAG [ruby-list:6799] R ....ふつうそれって, 状態変数とは 
 1462  02/27 Yukihiro Matsu [ruby-list:6800] R まつもと ゆきひろです そーなんで 
 1463  02/27 Shugo Maeda    [ruby-list:6802] R 前田です。 たしかにMutexだけ使っ 
 1464  02/27 Shugo Maeda    [ruby-list:6801] R 前田です。 あれ、分けてありますよ
 1465  02/27 Shugo Maeda    [ruby-list:6803] R 前田です。 そういえばfjで久野さん
 1466  02/27 石塚圭樹       [ruby-list:6804] r けいじゅ@日本ラショナルソフトウ 
 1468  02/27 Kazuhisa YANAG [ruby-list:6806] R SizedQueue が Queue を継承してい 

わたしもおちこぼれかけているので、 :-)
あとでまとめてRESするつもり(月曜日かな)ですが、

  def signal
    if @mutex.owner != Thread.current
      raise ThreadError, "current thread not owner"
    end
    @waiting_mutex.synchronize {
      t = @waiting.shift
      t.run if t
    }
  end

確認です。
これってsignalしたあとthreadはおこすけれど、そのまま自分も走ってしかも
mutexそのものは開放していないので Signal-Continueになってますよね?

そのうえで、変なやつが条件を変えないようにしようということだと理解していい
ですか?

# 読みきれていないかも知れない。

						S.Senda