我已經編寫了一個實現套接字連接的C/C++代碼,並且主線程在連續循環中監聽其端口。當這個端口發出連接請求時,我使用pthread調用產生了一個線程,並卸載了該線程上的工作。因此,我'n'線程動態創建'n'傳入請求。 問題是,如果一個線程終止,主線程也終止。如何在c/C++中動態創建線程
我已經使用了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);
}
你可以發佈一個完整的例子,顯示主線程退出時,一個子線程退出嗎? – simonc
分離pthread,以便完成時返回到系統。 – CBIII
如果你正在嘗試創建多個線程,那麼你將需要一個pthread_t數組,而不僅僅是1。 –