gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:22:23 26 4
gpt4 key购买 nike

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

int iPlcWriteReal;

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

在主线程中调用 ->

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

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

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

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

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

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

最佳答案

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

Fork() 从他自己的进程中创建一个副本,并且他正在使用共享/全局数据中的实际值。从 Fork-Process 中您无法直接访问全局数据。

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

谢谢

关于c pthread 全局变量 - 无写访问/无更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com