gpt4 book ai didi

c - pthread_exit 问题返回结构

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:19 25 4
gpt4 key购买 nike

我有一个结构

typedef struct something_t {
int a;
int b;
} VALUES;

在我的线程函数中我这样做

VALUES values;
values.a = 10;
values.b = 11;

pthread_exit((void*)&values);

我尝试通过做来接收

VALUES values;
pthread_join(thread, (void*)&values);
printf("A: %d\B: %d\n", values.a, values.b);

我每次收到的值都很奇怪。我对如何接收我最终在线程中创建的值感到困惑。我正在尝试学习 C 中的线程,似乎我已经掌握了它,但我无法返回值。有办法吗?感谢任何人的帮助。

最佳答案

您正在尝试返回堆栈(本地)变量。

这是不允许的,也不会起作用,因为当线程退出时,线程的堆栈将被删除(或至少是无效的)。

解决这个问题:

VALUES *values = malloc(sizeof VALUES);
values->a = 1;
values->b = 2;
pthread_exit( values );

然后,当你加入时释放值

VALUES *res;
pthread_join( thread, &res );
...
free(res);

关于c - pthread_exit 问题返回结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com