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

Gro*_*ppe 4 c c++ pthreads

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

pthread_t newThread;
Run Code Online (Sandbox Code Playgroud)

然后我打电话:

pthread_join(&newThread, NULL, myMethod, NULL);
Run Code Online (Sandbox Code Playgroud)

pthread_join() 会做什么?

Kaz*_*Kaz 5

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

或者它可能只是被解释为该类型的随机值,API 可以通过两种方式之一处理该值:要么不存在这样的线程并ESRCH返回,要么侥幸存在这样的线程。那么就会出现各种情况:是否可连接等等。