gpt4 book ai didi

使用线程计算两个数字的总和

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

我编写了这个小程序,用于从用户那里读取两个数字并使用线程函数计算它们的总和,该线程函数还负责在屏幕上显示结果。

int global[2];

void *sum_thread(void *arg)
{
int *args_array;
args_array = *(int**)arg;

int n1,n2,sum;
n1=args_array[0];
n2=args_array[1];
sum = n1+n2;

printf("N1 + N2 = %d\n",sum);

return NULL;
}

int main()
{
printf("First number: ");
scanf("%d",&global[0]);

printf("Second number: ");
scanf("%d",&global[1]);

pthread_t tid_sum;
pthread_create(&tid_sum,NULL,sum_thread,(void*)&global);
pthread_join(tid_sum,NULL);

return 0;
}

但是,当我运行代码时,由于段错误,它无法正常工作。我想我正在尝试访问/使用未分配的内存。我应该用 malloc 分配它还是我做错了其他事情?

最佳答案

数组名,global指向数组基地址。您可以简单地传递它并在您的线程函数中使用它。

但是,只是提一个逻辑点,如果您将 global 作为参数传递给 sum_thread() 函数,它不必是 global .

在你的代码中,改变

pthread_create(&tid_sum,NULL,sum_thread,(void*)&global);

pthread_create(&tid_sum,NULL,sum_thread,global);

然后,在sum_thread()函数中

args_array = *(int**)arg;

args_array = arg;

关于使用线程计算两个数字的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142868/

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