#include<stdio.h>
#include<unistd.h>
#include<pthread.h>
void* func(void*);
int main()
{
int numb = 0;
pthread_t pid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_create(&pid, &attr, func, (void*)&numb);
printf("%s%d\n", "Number: ", numb);
return 0;
}
//..............defintation...............
void* func(void* data)
{
int* numb = (int*)data;
*numb = 1000;
}
我想通过引用将该数字传递给函数“ func”。我这样做是通过传递数字“(void *)&numb”的地址来实现的。我在函数中将值更改为1000并在main中打印了该值,但输出为0而不是1000。
谢谢!!!
最佳答案
这是经典的比赛条件。
您的计算机在到达printf
中的*numb = 1000
之前先到达main中的func
。
您将需要条件变量或某种其他形式的并发原语,以便同步对该数据的访问。
这些是多线程编程的基础知识,因此您应该阅读有关该主题的书而不是猜测。
关于c - 通过pthread中的引用传递值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36387010/