假设我有一个声明的 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() 会做什么?
根据 ISO C,newThread变量是一个“不确定值的对象”,使用它会触发未定义的行为。它可能有一个触发 CPU 异常的“陷阱表示”。
或者它可能只是被解释为该类型的随机值,API 可以通过两种方式之一处理该值:要么不存在这样的线程并ESRCH返回,要么侥幸存在这样的线程。那么就会出现各种情况:是否可连接等等。