假设我有一个声明的pthread_t结构,如下所示:
pthread_t newThread;
然后我打电话给:
pthread_join(&newThread, NULL, myMethod, NULL);
pthread_join()会做什么?
答案 0 :(得分:4)
根据ISO C,newThread
变量是“不确定值的对象”,其使用会触发未定义的行为。它可能有一个“陷阱表示”,它会触发CPU异常。
或者它可能只被解释为该类型的随机值,API可以通过以下两种方式之一处理:要么没有这样的线程,要么返回ESRCH
,要么侥幸有这样的一个线程。然后会出现各种情况:是否可以加入,等等。
答案 1 :(得分:2)
如果将pthread_join称为未初始化的pthread_t,则行为未定义。