我有一个具有多个线程的应用程序,一个线程正在创建 4 个 tcp 连接,然后该线程创建另一个线程,该线程将使用 poll 或其他任何方法处理这 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