gpt4 book ai didi

C - 两个并发运行的程序需要共享数据?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:22 24 4
gpt4 key购买 nike

我有两个 C 程序需要在小型计算机上同时运行以进行一些模拟。一个程序将从单独的 Windows 机器接收用户输入,另一个程序将与另一台单独的机器通信以实际执行模拟算法。当小型计算机处于事件状态时,它们将始终保持连接并始终打开端口。

我遇到的问题是用户输入的信息将在运行算法的程序中使用,即:不经常监听用户输入的信息。我看不到自己合并这两个程序,因为模拟需要非常快速的通信,并且不能因监听另一个端口而陷入困境。而且这个设置显然禁止简单地链接文件或花哨的标题工作。

那么,有人有什么想法吗?他们可以做的一件事是从硬编码位置的文件读取/写入数据,但这看起来很俗气。我是否应该放弃当前的项目大纲并转向不同的方向?

提前致谢!

最佳答案

如果可能,我会将其构建为运行两个线程的单个进程,一个监听来自 Windows 机器的输入,另一个运行模拟本身。

这将使监听线程很容易就地更新数据,模拟线程将使用它。

一个棘手的部分是协调两者——如果模拟线程试图读取数据,而监听线程正在尝试写入数据,那么您很可能会得到损坏的数据。

为避免这种情况,您可以(例如)有两个单独的数据区域,一个用于当前数据,一个用于下一代数据,因为它正在由监听线程更新。

监听线程和模拟线程然后有一个原子标志(或可能两个)来指示每个线程在给定时间应该使用哪个数据区域。

关于C - 两个并发运行的程序需要共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144902/

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