Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有一个声明的 pthread_t 结构,如下所示:
pthread_t newThread;
然后我打电话:
pthread_join(&newThread, NULL, myMethod, NULL);
pthread_join() 会做什么?
根据 ISO C,该newThread变量是一个“不确定值的对象”,使用它会触发未定义的行为。它可能具有触发 CPU 异常的“陷阱表示”。
newThread
或者它可能只是被解释为该类型的随机值,API 可以通过以下两种方式之一处理:要么没有这样的线程,并且ESRCH被返回,要么侥幸有这样的线程。然后会出现各种情况:是否可以加入等等。
ESRCH
如果将 pthread_join 称为未初始化的 pthread_t,则行为未定义。