Qui*_*ion 0 c multithreading pthreads pthread-join
我有一个结构
typedef struct something_t {
int a;
int b;
} VALUES;
Run Code Online (Sandbox Code Playgroud)
在我的线程函数中我做
VALUES values;
values.a = 10;
values.b = 11;
pthread_exit((void*)&values);
Run Code Online (Sandbox Code Playgroud)
我试着通过这样做来接受
VALUES values;
pthread_join(thread, (void*)&values);
printf("A: %d\B: %d\n", values.a, values.b);
Run Code Online (Sandbox Code Playgroud)
我收到的价值每次都很奇怪.我很困惑如何接收我最终在线程中创建的值.我试图在C中学习线程,似乎我已经掌握了它,但我无法返回值.有办法吗?感谢任何人的帮助.
您正在尝试返回堆栈(本地)变量.
这是不允许的,并且不起作用,因为线程的堆栈将在线程退出时被删除(或者至少是无效的).
解决这个问题:
VALUES *values = malloc(sizeof VALUES);
values->a = 1;
values->b = 2;
pthread_exit( values );
Run Code Online (Sandbox Code Playgroud)
然后,当你加入免费的价值观
VALUES *res;
pthread_join( thread, &res );
...
free(res);
Run Code Online (Sandbox Code Playgroud)