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所以客户端的done会阻塞,直到服务器releases它。

微软文档:

于 2013-04-17T16:55:04.547 回答