对线程自身进行pthread_join,会返回EDEADLK(35),报死锁错误
这里的的死锁不是程序会阻塞在pthread_join函数上,而是pthread_join会返回错误值EDEADLK
int pthread_join(pthread_t thread, void **value_ptr) {
if (thread == pthread_self())
return EDEADLK;
// rest of function
}
并且pthread_join成功返回0,错误返回错误码而不是-1
本文探讨了在多线程编程中,pthread_join函数自我调用的问题。当一个线程尝试对其自身调用pthread_join时,系统将返回EDEADLK错误,表明存在死锁风险。文章详细解释了这一行为的原因,并指出此错误并非意味着线程会永久阻塞,而是函数调用本身会失败。
899

被折叠的 条评论
为什么被折叠?



