C++ Pthreads,与pthread\u join混淆(pthread\u t,void**)
我不明白为什么C++ Pthreads,与pthread\u join混淆(pthread\u t,void**),c++,c,pthreads,pthread-join,C++,C,Pthreads,Pthread Join,我不明白为什么pthread\u join将返回值作为第二个参数void**,而pthread\u exit(给定返回值)将返回值参数设置为void*pthread\u join等待线程结束,pthread_exit的结果值存储到*value_ptr中。如果要忽略结果,可以为值\u ptr传递NULL。这是通过将指针传递到变量来模拟按引用传递的常见C实践。看 pthread_join在成功时返回0作为函数返回值;然后您知道线程已经连接,您可以从*value\u ptr访问该值 void *val
pthread\u join
将返回值作为第二个参数void**
,而pthread\u exit
(给定返回值)将返回值参数设置为void*
pthread\u join等待线程结束,pthread_exit的结果值存储到*value_ptr中。如果要忽略结果,可以为值\u ptr传递NULL。这是通过将指针传递到变量来模拟按引用传递的常见C实践。看
pthread_join在成功时返回0作为函数返回值;然后您知道线程已经连接,您可以从*value\u ptr访问该值
void *value = NULL;
if (pthread_join(thread, &value) == 0) {
// thread has ended, and the exit value is available in
// the value variable
}
本质上,
pthread\u join()
希望返回两个信息:
- 成功/失败的迹象
- 线程返回的内容(类型为
)void*
pthread\u join()
:
- 将成功/失败作为函数值返回
- 在调用者提供的位置返回线程的
结果,调用者将void*
传递给该位置李>void**
pthread_join()
的情况下,调用方提供的位置是可选的。如果调用方对该结果不感兴趣,则可以在id中传递NULL。使调用者提供的位置可选是一种常见的习惯用法,但决不是通用的
pthread_exit()
不需要使用void**
作为参数,因为该参数不是函数的结果。因此它可以直接获取值。简洁地说:返回值是传递给pthread\u exit()
的值,但存储返回值的位置是传递给pthread\u join()的值。
。