PTHREAD_CREATE_JOINABLE在PTHREAD中有什么用途?

PTHREAD_CREATE_JOINABLE在PTHREAD中有什么用途?,c,pthreads,C,Pthreads,我阅读了以下代码: void mcachefs_file_start_thread() { pthread_attr_t attrs; pthread_attr_init(&attrs); pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_JOINABLE); pthread_create(&mcachefs_file_threadid, &attrs, mcachefs_file_thread,

我阅读了以下代码:

void
mcachefs_file_start_thread()
{
  pthread_attr_t attrs;
  pthread_attr_init(&attrs);
  pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_JOINABLE);
  pthread_create(&mcachefs_file_threadid, &attrs, mcachefs_file_thread, NULL);
}

这里,将
attrs
设置为
PTHREAD\u CREATE\u JOINABLE
有什么用途?此外,它不是由posix规范中的
pthead\u create
创建的线程的默认属性吗?

,新初始化的thread attributes对象中的detach state属性的默认设置确实是PTHREAD\u create\u JOINABLE。 例如,见
因此,您是对的:pthread_attr_setdetachstate行代码在代码段中不是必需的。

是的,
pthread_CREATE_JOINABLE
是默认属性。其目的是允许您调用线程,该线程是一个等待线程完成的函数,如果它的主例程失败,则返回值


有时候,当你创建一个线程来做一些后台工作时,在你使用它的结果或转移到其他地方之前,最好确保它已经完成。这就是可连接线程的用途。

+1为了准确起见,尽管我更喜欢另一种解释:“它允许您轻松锁定应用程序,允许您以不受控制的方式持续创建/终止/销毁线程,允许尝试线程微观管理,但这不起作用,降低整体性能,防止应用程序迅速关闭,甚至根本无法关闭。