gpt4 book ai didi

c - 线程创建(分离)从未执行

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:54 24 4
gpt4 key购买 nike

我写了这段代码:

void* th (void* arg)
{
sleep(1);
for(int i=0; i<1000;i++)
{
fprintf(stderr,"%d\t",i);
}
pthread_exit(NULL);
}

int main(int argc, char** argv)
{
pthread_t thread;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
pthread_create(&thread,&attr,th,NULL);
pthread_attr_destroy(&attr);
return 0;
}

分离状态应该使线程不可连接,因此即使在主进程终止后它也应该运行。但它不打印数字,我所看到的是线程终止而没有向 stderr 打印任何内容。
为什么detached线程没有执行?

最佳答案

main 线程的return 等同于整个进程的exit,因此您的进程将在您的线程甚至还没有退出之前退出打印任何东西。使用 pthread_exit 来终止该线程。

关于c - 线程创建(分离)从未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10788014/

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