发布网友 发布时间:2022-05-01 08:02
共1个回答
热心网友 时间:2022-06-26 11:23
执行完成后隐式退出
由线程本身显示调用pthread_exit 函数退出;
pthread_exit (void * retval)
被其他线程用pthread_cance函数终止:
pthread_cance (pthread_t thread)
解决办法:
// 创建线程前设置 PTHREAD_CREATE_DETACHED 属性
pthread_attr_t attr;
pthread_t thread;
pthread_attr_init (&attr);
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED);
pthread_create (&thread, &attr, &thread_function, NULL);
pthread_attr_destroy (&attr);
当线程为joinable时,使用pthread_join来获取线程返回值,并释放资源。
当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self());