如果我在未使用的pthread_t上调用pthread_join()会发生什么?

时间:2012-04-18 01:34:24

标签: c++ c pthreads

假设我有一个声明的pthread_t结构,如下所示:

pthread_t newThread;

然后我打电话给:

pthread_join(&newThread, NULL, myMethod, NULL);

pthread_join()会做什么?

2 个答案:

答案 0 :(得分:4)

根据ISO C,newThread变量是“不确定值的对象”,其使用会触发未定义的行为。它可能有一个“陷阱表示”,它会触发CPU异常。

或者它可能只被解释为该类型的随机值,API可以通过以下两种方式之一处理:要么没有这样的线程,要么返回ESRCH,要么侥幸有这样的一个线程。然后会出现各种情况:是否可以加入,等等。

答案 1 :(得分:2)

如果将pthread_join称为未初始化的pthread_t,则行为未定义。