1

我有一个关于如何设计以下系统的问题:

我的系统由几个监听环境的客户端组成。当超出音频阈值时,他们会将信息发送到服务器,该服务器有孩子在每个连接上监听。服务器需要来自所有客户端的信息来进行必要的计算。

当前,服务器在 UNIX 中工作,并已分叉连接。他们独立工作。

我想做的是告诉父母(在服务器中)信息已经发送,现在是时候处理它了。我应该怎么做

我正在考虑可能的不同方法:

  1. 在 Unix 中使用signal()以某种方式告诉父母发生了什么事
  2. 转换为线程并使用一些等待和通知功能

信号是可取的,但我无法弄清楚如何有效地做到这一点。因为在我的系统中可能会发生以下情况:

  • 如果所有客户端都成功地将信息发送到服务器的子节点,我如何以有效的方式告诉父节点我已准备好?不知道/我不确定它将如何处理它们。
  • 服务器可能不会收到来自所有客户端的信息。因此,父母必须为所有孩子等待一段时间,但不能太久。所以我猜是某种计时器?
4

2 回答 2

3

不要使用 fork,也不要使用信号。使用线程池

于 2013-01-14T09:52:08.317 回答
2

用于孩子和父亲之间的进程间通信的 Unix 域套接字怎么样?

http://en.wikipedia.org/wiki/Unix_domain_socket

一旦子进程通过 TCP 连接接收到数据,相同的数据将通过 Unix Domain Socket 转发给父进程,并立即通知父进程

于 2013-01-14T10:02:32.247 回答