我有2个我想要同步的流程:
第一个进程(客户端)启动另一个进程(启动某些WCF服务的服务器应用程序),并等待它达到某个状态。
我希望客户端进程启动服务器,并阻止所有服务都启动。
为此,服务器初始化一个Mutex对象并使用它来向客户端发信号通知它已完成。
这种方法存在的问题是,客户端不知道何时互斥锁实际上已完成设置互斥锁以及何时开始等待它。
是否有任何正式的算法/协议(暂时不使用编程语言)来协调这类任务?
答案 0 :(得分:0)
解决方案是在启动服务器之前直接在客户端中设置信号量,并使用与最初计划相同的机制,让其他进程知道它必须使用哪个同步对象。
在伪代码中,基本轮廓将是这样的:
客户端:
create semaphore with initial count at 0;
spawn server;
wait on semaphore;
服务器:
process jobs;
release semaphore;
对于任一过程,问题都解决了:因为信号量设置为0,客户端完成的wait
将阻塞,直到服务器release
为止。
Msdn文档: