-1

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

int iPlcWriteReal;

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

在 Main 中,线程被称为 ->

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

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

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

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

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

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

4

1 回答 1

1

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

Fork() 从他自己的进程中复制一份,他正在使用来自共享/全局数据的实际值。从 Fork-Process 你不能直接访问全局数据。

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

谢谢

于 2013-05-20T17:56:24.407 回答