首页 > 解决方案 > C - 两个同时运行的程序需要共享数据?

问题描述

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

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

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

提前致谢!

标签: c

解决方案


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

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

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

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

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


推荐阅读