我在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中使用任何循环写入全局值时是否有任何问题? 也许同步/更新功能?
答案 0 :(得分:1)
我发现了我的问题 - > fork()就是问题所在。
Fork()从他自己的进程中复制,他正在使用共享/全局数据中的实际值。 从Fork-Process,您无法直接访问全局数据。
而不是fork我在pthread中创建了一个pthread - 现在它正在工作。
THX