【发布时间】:2012-05-21 17:08:10
【问题描述】:
我有两个线程(我在 GNU/Linux 上使用 pthreads)。现在他们正在使用全局变量共享信息(我知道,这不太好)。在每个周期结束时,他们必须将 5 个变量 (doubles) 的值发送到另一个线程。
我想在他们的沟通渠道中引入一个固定的时间延迟,
即
线程1(1kHz) 10ms 线程2(1kHz)
我在想,在每个循环中,我都可以创建一个读取值的线程,休眠 10 毫秒,然后将其转发到另一个线程,然后死掉。 这将使系统每个周期创建 2 个线程,一个用于通信通道的每个方向(每毫秒 2 个线程)。
还有其他智能方法可以模拟通信延迟吗?
更新:我不想同步线程的通信,而是在它们之间添加延迟。 如果 thread1 在 1s 时间写了一些东西,另一个线程应该只能在 1s + 10ms 时间读取它。
【问题讨论】:
-
为什么每次都需要新建线程?
-
您希望这种延迟作为同步的一种方式吗?如果是这样,那么这是一个可怕的想法。如果不是,那为什么会延迟?
-
@DavidHeffernan:我需要添加延迟以重现网络中的通信延迟。
-
@HonkyTonk:我不知道,这是我的第一个猜测。我是来寻求更好的解决方案的。
-
您可以使用同步在写入器线程中设置基于时间的变量,并且仅在所需时间已过时才检查读取器中的其他变量(与基于时间的变量的值相比)
标签: c linux multithreading pthreads communication