我刚刚开始研究pthread
的跨平台。但我对用于pthread_create()
和pthread_join()
的变量类型非常困惑。请看下面的代码。关于pthread_create()和pthread_join()
// This is just simple code for test, so don't take this variable seriously!
int result;
void* myThreadFunc(void* arg) {
result = *(int*)arg;
// Why not &result, but result???
return (void*)result;
}
int main() {
pthread_t myThread;
int argForThread = 10;
int threadResult = 0;
pthread_create(&myThread, NULL, myThreadFunc, (void*)&argForThread);
// Why (void**), but not (void*)?
pthread_join(myThread, (void**)&threadResult);
return 0;
}
正如我在评论中写的,我不明白这些指针,它对我来说没有意义。
对于第一个,为什么我必须为指针类型放置值类型1?
对于第二个,为什么我只需要一个局部变量地址的双指针转换?
请一次提出一个问题。 –
但是我认为这是最后一个问题,这个问题是关于C++中的POINTER的。不是关于实际功能。 – Jenix
你想跨平台的代码?使用C++的'std :: thread'! –