假设我在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}}打开,如果之前已满,则可以创建另一个线程(其他客户端可以连接)。
答案 0 :(得分:1)
从start函数返回的pthread等同于调用pthread_exit
的线程。如果线程已分离,则它将不复存在。
答案 1 :(得分:1)
规范说从线程函数返回等同于调用pthread_exit
,线程函数的返回值变为pthread_join
可用(假设你没有分离线程)。
通常,这是通过让pthread_create
创建一个开始执行固定(libc)“线程入口函数”的线程来实现的。此入口函数调用您的函数,然后调用pthread_exit
(在完成任何相关的清理之后)。