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

时间:2013-05-19 11:14:34

标签: c

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

int iPlcWriteReal;

我创建了一些函数并通过pthreads调用它们。

在Main中,线程被称为 - >

iThreadResult = pthread_create(&threadWeb, NULL, pThreadWebserver, &fTest);
pthread_join(threadWeb, NULL);

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

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

使用Mutex功能锁定和解锁我没有成功。

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

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

1 个答案:

答案 0 :(得分:1)

我发现了我的问题 - > fork()就是问题所在。

Fork()从他自己的进程中复制,他正在使用共享/全局数据中的实际值。 从Fork-Process,您无法直接访问全局数据。

而不是fork我在pthread中创建了一个pthread - 现在它正在工作。

THX