我是C新手,并且想用线程来玩一下。我想从使用pthread_exit()
如何从C中的线程返回一个值
我的代码线程返回一些值如下:
#include <pthread.h>
#include <stdio.h>
void *myThread()
{
int ret = 42;
pthread_exit(&ret);
}
int main()
{
pthread_t tid;
void *status;
pthread_create(&tid, NULL, myThread, NULL);
pthread_join(tid, &status);
printf("%d\n",*(int*)status);
return 0;
}
我希望节目输出“42 \ n”,但它输出的随机数。我怎样才能打印返回的值?
编辑: 根据第一个答案,问题是我正在返回指向本地变量的指针。返回/存储多个线程变量的最佳做法是什么?全局散列表?
在此先感谢
响应于编辑:我会倾向于如果我需要提供多个线程使用的阵列,每个具有一个地方写它们的结果。如果您事先不知道您要创建多少个线程的上限,那么我通常会认为这是一个问题。但是一般来说,任何结构都可以,只要启动线程的人可以确保线程存储其结果的位置;线程被告知在哪里存储它;谁加入线程可以恢复结果,如果有必要释放它。如果线程以相同的值退出,它将作为参数传递,这可以提供帮助。 – 2010-02-12 12:08:42