我有一个关于pthreads的问题,这个小C源代码:
int calc = 0;
void func(void* data){
calc = 2 * 2;
return NULL;
}
int main(){
pthread_t t;
if(0==pthread_create(&t,NULL,func,NULL)){
if(0==pthread_join(t,NULL)){
printf("Result: %d\n",calc); // 4 ?
}
}
}
如果pthread_join返回成功,“函数”是否始终完全执行?(在printf上calc始终等于4?)
1条答案
按热度按时间mw3dktmi1#
函数
pthread_join
在成功时返回零。文档中说
pthread_join
会一直阻塞到线程结束,因此,通过一些应用逻辑,可以很容易地得出线程已经结束的结论。另一方面,
pthread_join
以不同的方式失败:EINVAL
EDEADLK
ESRCH
,当它侦测到使用的执行绪控制代码超过执行绪的结尾时。如果你想知道更多,你可能想看看documentation。