1

次のシステムの設計方法について質問があります。

私のシステムは、環境をリッスンする複数のクライアントで構築されています。オーディオのしきい値に違反すると、情報をサーバーに送信します。サーバーには、各接続でリッスンしている子がいます。サーバーは、必要な計算を行うためにすべてのクライアントからの情報を必要とします。

現在、サーバーは UNIX で動作しており、接続を分岐しています。彼らは独立して働いています。

私がやりたいことは、情報が送信されたことを (サーバー内の) 親に伝えることであり、それを処理する時間です。どうすればいいですか?

私はそれを行うための可能なさまざまな方法を考えています:

  1. Unix で使用signal()して、何らかの形で親に何かが起こったことを伝える
  2. スレッドに変換し、いくつかの待機および通知機能を使用します

シグナリングは望ましいですが、効率的に行う方法がわかりません。私のシステムでは次のことが発生する可能性があるためです。

  • すべてのクライアントがサーバーの子に情報を正常に送信した場合、効率的な方法で準備ができていることを親に伝えるにはどうすればよいですか? わからない/どのように処理されるかわかりません。
  • サーバーはすべてのクライアントから情報を受信するとは限りません。したがって、親はすべての子をしばらく待つ必要がありますが、あまり長くはありません。だから私はある種のタイマーを推測していますか?
4

2 に答える 2

3

フォークを使用しないでください。また、シグナルを使用しないでください。スレッド プールを使用します。

于 2013-01-14T09:52:08.317 に答える
2

子供と父親の間のプロセス間通信用のUnixドメインソケットはどうですか?

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

子がTCP接続を介してデータを受信するとすぐに、同じデータがUnixドメインソケットを介して親プロセスに転送され、後者のプロセスに即座に通知されます。

于 2013-01-14T10:02:32.247 に答える