【发布时间】:2012-04-18 01:34:23
【问题描述】:
假设我有一个声明的 pthread_t 结构,如下所示:
pthread_t newThread;
然后我打电话:
pthread_join(&newThread, NULL, myMethod, NULL);
pthread_join() 会做什么?
【问题讨论】:
假设我有一个声明的 pthread_t 结构,如下所示:
pthread_t newThread;
然后我打电话:
pthread_join(&newThread, NULL, myMethod, NULL);
pthread_join() 会做什么?
【问题讨论】:
根据 ISO C,newThread 变量是一个“不确定值对象”,使用它会触发未定义的行为。它可能具有触发 CPU 异常的“陷阱表示”。
或者它可能只是被解释为该类型的随机值,API 可以通过以下两种方式之一处理:要么没有这样的线程,并且返回 ESRCH,要么侥幸有这样的线程.然后出现各种情况:是否可以加入等等。
【讨论】:
如果将 pthread_join 调用为未初始化的 pthread_t,则行为未定义。