Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c pthread全局变量-无写访问/无更新_C - Fatal编程技术网

c pthread全局变量-无写访问/无更新

c pthread全局变量-无写访问/无更新,c,C,我在pthreads中编写全局变量时遇到问题。 我的代码头中定义的一些变量-> int iPlcWriteReal; 我创建了一些函数并通过pthread调用它们 主线程称为-> iThreadResult = pthread_create(&threadWeb, NULL, pThreadWebserver, &fTest); pthread_join(threadWeb, NULL); 问题是当我从任何线程写入全局int时-该值不会在自己的线程中更新,也不会在其他线程中更

我在pthreads中编写全局变量时遇到问题。 我的代码头中定义的一些变量->

int iPlcWriteReal;
我创建了一些函数并通过pthread调用它们

主线程称为->

iThreadResult = pthread_create(&threadWeb, NULL, pThreadWebserver, &fTest);
pthread_join(threadWeb, NULL);
问题是当我从任何线程写入全局
int
时-该值不会在自己的线程中更新,也不会在其他线程中更新(iPlcWriteReal=34;)

有3个线程,每个线程内部都有一个wihile(1)循环-> 读取数据/Web服务器/存档数据

使用互斥锁函数lock&unlock,我没有成功

用指针&
malloc
我也没有运气。 我还通过线程传递了一个指针-地址总是正确的-但是值没有被更新

当我不使用while(1)-循环时,与全局数据的通信工作正常-当我在pthreads中使用任何循环并写入全局值时,是否存在任何问题?
可能是同步/更新功能?

我发现了我的问题->问题出在fork()上

Fork()从他自己的进程中复制,并使用共享/全局数据中的实际值。 通过Fork进程,您不能直接访问全局数据

我在pthread中创建了一个pthread,而不是fork,现在它可以工作了


Thx

这就是为什么并发编程真的很难…@KerrekSB-没那么难-女性总是这么做!一边唠叨,一边飞,一边擦婴儿的屁股!如果运气好的话,我会同时被打屁股!!!!老实说,您认为我们应该如何回答这个问题?我认为如果您发布完整的代码,您将有更大的机会获得实际帮助。或者更好的是,一个非常精简的代码版本,它显示了关键的部分。比如:一个全局变量,访问它的两个pthread,预期结果,实际结果。只要我的2美分。