pthread中PTHREAD_CREATE_JOINABLE的用法是什么?

时间:2012-08-04 07:31:05

标签: 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, NULL);
}

此处,将attrs设置为PTHREAD_CREATE_JOINABLE的用法是什么?此外,它不是pthead_create创建的线程的默认属性吗?

2 个答案:

答案 0 :(得分:11)

是的,PTHREAD_CREATE_JOINABLE是默认属性。目的是它允许你在线程上调用pthread_join,这是一个等待线程完成的函数,并且如果它的主程序给你返回值。

有时,当您创建一个线程来完成一些后台工作时,在使用其结果或转移到其他内容之前确保它已完成可能是个好主意。这就是可连接线程的用途。

答案 1 :(得分:3)

根据posix规范,新初始化的线程属性对象中的detach state属性的默认设置确实是PTHREAD_CREATE_JOINABLE。 例如,请参阅http://linux.die.net/man/3/pthread_attr_setdetachstate 所以你是对的:你的代码片段中不需要pthread_attr_setdetachstate代码行。