2个进程之间状态的适当协调



我有两个进程,我想同步:

第一个进程(客户端)启动另一个进程(启动一些WCF服务的服务器应用程序),并等待它达到某个状态。

我想让客户端进程启动服务器,并阻塞直到所有服务启动。

要做到这一点,服务器初始化一个互斥对象,并使用它来通知客户端它已经完成。

这种方法的问题是客户端不知道何时互斥锁实际上已经完成设置,以及何时开始等待它。

是否有任何正式的算法/协议(暂时不考虑编程语言)来协调这种任务?

解决方案是在启动服务器之前直接在客户端中设置一个信号量,并使用与最初计划相同的机制让其他进程知道它必须使用哪个同步对象。

在伪代码中,基本轮廓是这样的:

客户:

create semaphore with initial count at 0;
spawn server;
wait on semaphore;
服务器:

process jobs;
release semaphore;

对于任何一个进程,问题都解决了:因为信号量被设置为0,客户端完成的wait将被阻塞,直到服务器release完成它。

Msdn文档:

    <
  • 信号量对象/gh>
  • CreateSemaphore
  • ReleaseSemaphore

最新更新