1

次のような Windows (または .NET) 同期プリミティブはありますか。

  • 同じ PC 上の複数のプロセスで共有できます。
  • 共有リソースに現在依存しているスレッドの数のカウンターを表します。
  • プロセスが異常終了すると、OS によって自動的に減分されます。と
  • 別のプロセスで待機できますか(カウントがゼロになったときに通知されますか)?

複数のプロセス間でリソースを共有し、最後のプロセスが (正常または異常にかかわらず) 終了したとき、またはリソースの処理が完了したことを宣言したときにリソースを閉じたいと考えています。起動時に何らかのハンドシェークが必要になりますが、それは可能です。興味深い部分は、プロセスが終了するのを待っているところです。

私が知る限り、名前付きセマフォ (初期カウントが大きい) は、最後の要件以外のすべてを満たすことができます。しかし、セマフォはカウントアップではなくカウントダウンします。また、セマフォが最大カウントに達するのを待つ方法がわかりません。

このためのプリミティブが存在しない場合、そのようなものを作成する .NET ライブラリ、またはビルド方法に関する情報はありますか?

(これはHow can I wait until a Windows process, and its subprocesses, have all exited?の可能な実装のためのものです.しかし、その質問には多くの可能なアプローチがありますが、ここでは、同期オブジェクトがタスクを実行できるかどうかを具体的に調べたいと思います.それらは私が思いついた最初のアプローチですが、実際にこれが機能するかどうかについて、ここで何かを学びたいと思っています.)

4

1 に答える 1

1

これらすべての条件を満たすプリミティブはありません。に相当する独自のクロスプロセスを作成する必要がありますCountdownEvent

于 2010-07-13T13:25:49.670 に答える