0

同期したいプロセスが 2 つあります。

最初のプロセス (クライアント) は、別のプロセス (一部の WCF サービスを開始するサーバー アプリ) を起動し、特定の状態になるまで待機します。

クライアント プロセスでサーバーを起動し、すべてのサービスが起動されるまでブロックしたいと考えています。

これを行うために、サーバーは Mutex オブジェクトを初期化し、それを使用して、完了したことをクライアントに通知します。

このアプローチの問題は、ミューテックスが実際にいつミューテックスのセットアップを完了し、いつ待機を開始するかをクライアントが認識できないことです。

この種のタスクを調整するための正式なアルゴリズム/プロトコル (現時点ではプログラミング言語を脇に置いておく) はありますか?

4

1 に答える 1

0

解決策は、サーバーを起動する前にクライアントにセマフォを直接セットアップし、最初に計画したのと同じメカニズムを使用して、他のプロセスが使用する必要がある同期オブジェクトを知らせることです。

疑似コードでは、基本的なアウトラインは次のようになります。

クライアント:

create semaphore with initial count at 0;
spawn server;
wait on semaphore;

サーバ:

process jobs;
release semaphore;

どちらのプロセスでも、問題は解決されます。セマフォが 0 に設定されているためwait、サーバーがそれを処理するまで、クライアントによる処理はブロックされますrelease

msdn ドキュメント:

于 2013-04-17T16:55:04.547 に答える