gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:46 27 4
gpt4 key购买 nike

假设我在 while 循环中使用 pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*fun) (void *), void *arg),线程完成函数 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[] 中的插槽,如果之前已满,则可以创建另一个线程(其他客户端可以连接)。

最佳答案

规范说从线程函数返回等同于调用 pthread_exit,线程函数的返回值对 pthread_join 可用(前提是您没有分离线程)。

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

关于c - 当 pthread 退出函数时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com