3

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

pthread_t newThread;

然后我打电话:

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

pthread_join() 会做什么?

4

2 回答 2

4

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

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

于 2012-04-18T01:42:33.273 回答
2

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

于 2012-04-18T01:40:13.397 回答