【发布时间】:2012-08-08 01:18:46
【问题描述】:
在多个进程之间协调监听套接字的接受的最佳方式是什么?
我正在考虑以下两种方法之一:
-
有一个“主”进程,当轮到每个进程开始接受连接时,它会向每个进程发送一条消息。
所以顺序是:
Master 进程将令牌交给 Worker A。Worker A 接受连接,将令牌返回给 Master 进程。主进程给 Worker B 等令牌。
每个进程都有一个接受线程,该线程将围绕一个共享互斥体旋转。锁定互斥体,接受连接,释放锁。
有更好的想法吗?
- 当连接进入时,所有进程都会被唤醒。在接受连接之前,他们尝试锁定共享互斥锁。锁定互斥体的人首先接受连接。
【问题讨论】:
-
如果我是你,我会采用大师级方法。
-
感谢您的建议。我目前已经实现了这个(主进程发送消息作为令牌),但我认为它太慢了。对于每个接受,我都会进行以下“额外”系统调用。 Worker 调用“send()”发送回令牌。主睡眠是“select()”调用“recv()”获取token。然后调用“send()”将令牌发送给 Worker B 并在“select()”中返回睡眠。工人 B 调用“recv()”来接受令牌。所以我想也许它太慢了......