ldo*_*dog 4 multithreading pthreads
我正在尝试在两个不是全局变量的线程之间共享一个结构.变量本身在main函数的堆栈上实例化,然后在两个线程启动时将其指针作为参数传递给两个线程.
什么我发现是,当我改变这种结构改变的成员的值没有反映曾在其他并行线程.有没有办法在两个线程之间共享一个非全局变量(例如一个整数),这样在一个线程中对该变量进行的更改会出现在另一个线程中?
这都是因为我想避免为代码可维护性添加全局变量.
请记住,线程获得自己的堆栈 - 所以如果你传入一个整数并且函数超出范围,那么你指的是现在拥有完全不同的内存.
void foo(void)
{
pthread_t t1, t2;
struct foo common_value;
if (pthread_create(&t1, NULL, a, &common_value) != 0)
{
return -1;
}
if (pthread_create(&t2, NULL, b, &common_value) != 0)
{
return -1;
}
// upon exiting this function, common_value is no longer what you think it is!
}
Run Code Online (Sandbox Code Playgroud)