C-两个同时运行的程序需要共享数据吗?

时间:2018-07-02 23:41:54

标签: c

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

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

那么,有人有什么想法吗?他们可以做的一件事是在硬编码位置的文件中读取数据/向文件中写入数据,但这似乎很俗气。我应该只删除当前的项目大纲并朝另一个方向前进吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

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

这将使侦听线程很容易简单地就地更新数据,而模拟线程将在该位置使用数据。

一个棘手的部分是协调两者-如果模拟线程尝试在侦听线程试图写入数据的同时读取数据,则很可能会损坏数据。

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

然后,侦听线程和模拟线程将具有一个原子标志(或可能两个),以指示在给定时间各自应使用哪个数据区域。