当pthread退出函数时会发生什么

时间:2015-11-03 23:13:16

标签: c multithreading pthreads

假设我在while循环中使用fun(),一旦完成函数int pthread_detach(pthread_t thread),线程会发生什么,它是否也属于主线程的循环如果我调用pthread_t t[NTHREADS]; int i = -1; while(1){ //do something ++i; pthread_create(&t[i], NULL, fun, (void *)i); pthread_detach(t[i]); //main thread goes on, created one detaches when finished } 或只是主线程停留在循环中?

示例:

NTHREADS

我想要做的是一个多客户端服务器,其中每个线程服务于它自己的客户端,有fun(),当某个线程完成t[]或者更确切地说服务它的客户端时,bootstrap中的插槽1}}打开,如果之前已满,则可以创建另一个线程(其他客户端可以连接)。

2 个答案:

答案 0 :(得分:1)

从start函数返回的pthread等同于调用pthread_exit的线程。如果线程已分离,则它将不复存在。

答案 1 :(得分:1)

规范说从线程函数返回等同于调用pthread_exit,线程函数的返回值变为pthread_join可用(假设你没有分离线程)。

通常,这是通过让pthread_create创建一个开始执行固定(libc)“线程入口函数”的线程来实现的。此入口函数调用您的函数,然后调用pthread_exit(在完成任何相关的清理之后)。