我的任务是创建一个复制pthread
功能的用户级线程库(完全披露:这是一个OS课程)。但是,我不清楚线程已经退出时pthread_join()
和pthread_exit()
如何相互作用。
特别是,手册页指出:
pthread_join()函数等待thread指定的线程 终止。如果该线程已经终止,那么 pthread_join()立即返回。
这是否保证即使我创建了数百万个线程,其结果仍可用于一次加入?否则,我可以期待结果保持多久?
我不是在寻求有关如何实施它的建议(这是最有趣的!),我只是想在潜入之前确定行为。
答案 0 :(得分:3)
没有时间限制,只要流程本身处于活动状态,实现就必须保持“返回值”。
pthread_exit
的POSIX定义只是说:
pthread_exit()
函数将终止调用线程并使值<{1}}可用于与终止线程的任何成功连接。
无论连接是在退出之前,还是在几年后启动,或者是否只有一个额外的线程或数百个。