我编写了一个实现套接字连接的 C/C++ 代码,并且主线程在其端口处连续循环监听。当此端口收到连接请求时,我使用 pthread 调用生成了一个线程,并卸载了该线程上的工作。因此,我为“n”个传入请求动态创建了“n”个线程。问题是,如果一个线程终止,主线程也会终止。
我使用了 pthread_join() 但它等待参数中的线程完成。在我的情况下,一旦调用 pthread_join() 就不会产生新线程。
pthread_t t;
while(1) //server always to be in listen mode
{
client_len=sizeof(client_sockaddr);
client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_sockaddr,&client_len);
pthread_create(&t,NULL,server_thread,(void*)client_sockfd);
(void)pthread_join(t,NULL);
}