Multithreading 将返回值从一个线程传递到另一个线程
我正在学习posix线程编程,并在以下程序中苦苦挣扎。所以我有两个ID为:tid1和tid2的线程。我使用带有tid1的线程将我希望彼此求和的值输入带有tid2的第二个线程,但求和的结果不正确。因此,我尝试在tid2中显示我在tid1中输入的值,但我意识到这些值也不正确(与输入的值不对应)。你能告诉我我在哪里出错吗?我将从tid1线程返回的指针传递到tid2线程的方式,对吗 注意:从tid1返回的值已经正确,因为我检查了它,您也可以在main(第56行)中看到Multithreading 将返回值从一个线程传递到另一个线程,multithreading,pointers,Multithreading,Pointers,我正在学习posix线程编程,并在以下程序中苦苦挣扎。所以我有两个ID为:tid1和tid2的线程。我使用带有tid1的线程将我希望彼此求和的值输入带有tid2的第二个线程,但求和的结果不正确。因此,我尝试在tid2中显示我在tid1中输入的值,但我意识到这些值也不正确(与输入的值不对应)。你能告诉我我在哪里出错吗?我将从tid1线程返回的指针传递到tid2线程的方式,对吗 注意:从tid1返回的值已经正确,因为我检查了它,您也可以在main(第56行)中看到 #包括 #包括 #包括 #包括 v
#包括
#包括
#包括
#包括
void*entryValues(void*p)
{
int nbVal=*(int*)p;
int i=0;
int-val=0;
int*选项卡;
而(i
有人能帮帮我吗?有人能帮帮我吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
void *entryValues(void *p)
{
int nbVal = *(int*)p;
int i = 0;
int val = 0;
int *tab;
while(i < nbVal){
printf("value %d: ", i);
scanf("%d", &val);
tab[i] = val;
i++;
}
pthread_exit(tab);
}
void *sumValues(void *p)
{
int *values;
int sum = 0, i = 0;
memcpy(values, (int*)p, sizeof((int*)p));
printf("%d\n", values[0]);
for (i = 0; i < sizeof(values); i++)
{
//printf("value %d: %d\n", i, values[i]);
sum += values[i];
}
printf("The sum of the entered values is: %d\n", sum);
return NULL;
}
int main(int argc, char **argv)
{
pthread_t tid1;
pthread_t tid2;
int nbValues = 0;
int *arr;
printf("Please enter the number of values you want to sum each other: ");
scanf("%d", &nbValues);
if(pthread_create(&tid1, NULL, entryValues, &nbValues)!= 0)
{
fprintf(stderr, "creation of thread failed\n");
return -1;
}
pthread_join(tid1, (void**)&arr);
//printf("array: %d\n", arr[0]);
if(pthread_create(&tid2, NULL, sumValues, arr) != 0)
{
fprintf(stderr, "creation of thread failed\n");
return -1;
}
pthread_join(tid2, NULL);
/* Waiting for the termination of tid */
printf("End of main thread\n");
return EXIT_SUCCESS;
}