Unix用户空间中的实时IPC

时间:2017-05-31 12:11:56

标签: c++ unix real-time ipc producer-consumer

我想问一下以下问题的最佳方法: 我有两个不同的过程:生产者和消费者。 生产者生成项目,其中每个项目都是unsigned int。并且消费者消费它们,与常规消费者生产者问题的不同之处在于消费者需要知道物品生产的确切时间。 消费者不能信任生产者,因此生产者不应该将时间与物品一起提供,消费者在消费物品时迫使系统询问当前时间。 所有这些都需要尽可能少地对生产者执行,因为生产者是实时应用程序。

我试着在Unix中读到有关IPC机制的内容,但我找不到能满足这些约束的东西。 消费者和生产者都是用c ++编写的。

任何想法都会受到欢迎, 提前致谢

1 个答案:

答案 0 :(得分:0)

  1. 在生产者和消费者之间使用共享内存。
  2. 对消费者方面的活动进行投票,以尽量减少延迟。
  3. 将消费者线程固定到CPU以防止上下文切换(CPU亲和性)。
  4. 使用定时器印记计数器(TSC)以避免长时间"获取时间"系统调用。
  5. 这将为您提供最精确的结果。

    当然,有了其他要求,您可以牺牲上面的一些项目,使您的消费者应用程序更节省CPU或更简单......这取决于您。