Delphi 2009でTMonitorレコードを紹介したことを大変うれしく思い、マルチスレッド環境で特定のオブジェクトをロックすることができました。私に困惑しているのは、このレコードタイプのPulseとPulseAllメソッドです。Delphiでは、System.TMonitor.PulseとTMonitor.PulseAllが実際に何をしますか
たとえばDelphiのヘルプの項目では、「呼び出し元のスレッドがオブジェクトを解放するとすぐに、指定されたオブジェクトをロックすることができる待機キュー内の次のスレッドに通知します。
本当に?どういう意味ですか?問題なしでPulseを使わずにTMonitorを使用しました。さらに、DelphiのソースでTMonitorを使用すると、Pulseを使用しないこともあります。
PulseとPulseAllのメソッドは、.NETモニタクラスとのソースレベルの互換性のためにDelphiのTMonitorレコードにのみ含まれていますか、それとも実際に目的を果たしていますか?
この問題については2つの質問("TMonitor.Pulse vs TMonitor.PulseAll"と"What is TMonitor in Delphi System unit good for")がありますが、私は決定的な答えを探しています。
TMonitorはXE2で修正されていますか? –
@David、私の無知を許そうとしましたが、何が間違っていたのですか? – Johan
@johanどうやらWaitとPulseは正しく動作しません。 Chris Rolliston、Primoz、Eric Grangeなどから2ヶ月前にブログを投稿しています。 –