我正在尝试从pthread_join打印返回值。我有以下代码:

    for(j = 0 ; j < i ; ++j){
        pthread_join( tid[j], returnValue);  /* BLOCK */
        printf("%d\n",  (int)&&returnValue);
}

所有线程都存储在tid数组中,并正确创建和返回。在每个线程函数的末尾,我有以下行:
pthread_exit((void *)buf.st_size);

我试图返回正在读取的某些文件的大小。由于某种原因,我无法获取它来打印正确的值。我尝试从pthread_join函数调用中取消引用void **的方式很有可能,但是我不太确定该怎么做。在此先感谢您的帮助。

最佳答案

您需要将void *变量的地址传递给pthread_join-它会用退出值填充:

for(j = 0 ; j < i ; ++j) {
    void *returnValue;
    pthread_join( tid[j], &returnValue);  /* BLOCK */
    printf("%d\n",  (int)returnValue);
}

关于C pthread_join返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13315575/

10-11 23:01