複数のスレッドを持つアプリケーションがあり、1 つのスレッドが 4 つの tcp 接続を作成しています。このスレッドは、ポーリングなどを使用してこれら 4 つの接続の受信機能を処理する別のスレッドを作成し、元のスレッド (最初のスレッド) がメッセージの送信を開始します。これらの 4 つの接続 (ラウンド ロビン) に。以下の疑似コードのようなものです。
main()
{
pthread_create( &thread1, NULL, sending_thread, (void*) args);
}
void *sending_thread( void *ptr )
{
int i=0;
int *connections;
connections = create_connections();
pthread_create( &thread1, NULL, receiving_thread, (void*)&connections);
while(1) {
send(connections[i], "test");
i++;
if (i > 3)
i=0;
}
}
void *receiving_thread( void *ptr )
{
char *msg;
msg = receive(connections[i]);
save_received_msg_to_disk(msg);
}
私の質問は、接続を確認して切断されたものを起動するにはどうすればよいですか? たとえば、connection1 がダウンしたとします。同じ fd (この場合は connection[1]) で別の接続を作成する必要がありますか? または、このケースを処理する他の方法はありますか?
環境は Linux の C/pthread です