pthread_exit()可以在pthread_join()之后多久才能成功?

时间:2014-01-17 06:45:09

标签: c++ pthreads pthread-join

我的任务是创建一个复制pthread功能的用户级线程库(完全披露:这是一个OS课程)。但是,我不清楚线程已经退出时pthread_join()pthread_exit()如何相互作用。

特别是,手册页指出:

  

pthread_join()函数等待thread指定的线程          终止。如果该线程已经终止,那么          pthread_join()立即返回。

这是否保证即使我创建了数百万个线程,其结果仍可用于一次加入?否则,我可以期待结果保持多久?

我不是在寻求有关如何实施它的建议(这是最有趣的!),我只是想在潜入之前确定行为。

1 个答案:

答案 0 :(得分:3)

没有时间限制,只要流程本身处于活动状态,实现就必须保持“返回值”。

pthread_exit的POSIX定义只是说:

  

pthread_exit()函数将终止调用线程并使值<{1}}可用于与终止线程的任何成功连接

无论连接是在退出之前,还是在几年后启动,或者是否只有一个额外的线程或数百个。