Chinaunix
标题:
pthread_join求解
[打印本页]
作者:
zxjcarrot
时间:
2013-07-20 09:14
标题:
pthread_join求解
本帖最后由 zxjcarrot 于 2013-07-20 09:15 编辑
请问如果主线程创建一个子线程 然后调用pthread_join回收其资源,但是如果在pthread_join调用之前 子线程已经运行完毕并返回,是否能够依然成功呢,为什么
如果是wait的情况又是怎么样?
有没有什么队列机制在里面?
作者:
myworkstation
时间:
2013-07-20 11:52
即使phtread_join调用之前线程已经结束也需要调用pthread_join,这个函数除了有等待线程结束的功能外还有清理线程资源的作用,这点类似于进程的wait,如果调用了pthread_detach就不用调用pthread_join了。至于使用wait用在线程上,这是不合适的,以Linux为例pthread虽然在内核中也是进程,但调用pthread_create创建线程的thread_id并不是线程在内核中的进程ID,虽然可以调用gettid获取真实的内核thread id但这是不可移植的函数。应该说wait调用在线程ID上是个未指定或未定义的行为。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2