クライアントからの選択リクエストを介して受け入れるc言語のサーバーがあります。クライアントから要求されたアクションを提供するために、いくつかのスレッドを作成します。この時点まで、私は大丈夫です。しかし、今は内部ソケットが必要なため、作成されたスレッドはメインスレッドと通信し、これを介して応答を送信します。これをすべて修正する方法はありますか?
質問する
184 次
2 に答える
1
とても簡単です。これに使用したいのは ですsocketpair(2)
。スレッドごとに 1 つのペアを作成すれば完了です。
于 2013-06-01T20:01:26.770 に答える
0
@Guillaumeは正しいです。しかし、なぜその複雑さを経験する必要があるのでしょうか。
ソケットを介して通信する1つのプログラムのすべてのスレッドで実行されるサーバーと、通常のソケットを介して通信する「ワーカースレッドサーバー」を備えた異なるコンピューターで実行されるサーバーを使用する場合にのみ、これを行います。
このようなエキゾチックなものが必要でない限り、共有メモリのブロック (必要に応じてミューテックスで保護) を使用してスレッド間で通信できます。たとえば、タスク オブジェクトをディスパッチャー スレッドからワーカー スレッドに渡します。また、スレッド間の通信のためにデータをシリアライズおよびアンシリアライズする複雑さは忘れてください。
于 2013-06-01T20:06:37.600 に答える