【问题标题】:Signal style IPC for multithreaded linux applications用于多线程 linux 应用程序的信号样式 IPC
【发布时间】:2012-08-21 21:01:51
【问题描述】:

我有为实时操作系统 (RTOS) 编写的遗留应用程序代码。大部分代码使用操作系统特定的进程间通信 (IPC) 调用,看起来非常类似于信号。

它有两个 IPC 调用:

  • status_code signal_push(connector, event)
  • event signal_wait(connector)

我想慢慢将该应用程序移植到 Linux 以改进测试和调试。

我想创建一个任务描述文件,其中涵盖了任务与它们相关的 IPC 原语以及事件和处理程序。

示例如下所示:

SignalHandler(connector=crypto_connector, 
              events = [(cyrpto_init, crypto_init_handler),
                        (crypto_run, crypto_run_handler),
                        (crypto_done, crypto_done_handler]) 

Task(name=crypto, priority=1, stack_size=256, connector=crypto_connector)

从这个描述文件中,它应该为每个调用相应处理程序的任务生成一个线程,该处理程序由工程师编写。它还应该生成类似于emit_crypto_init()的调用存根

我很清楚我应该从这个描述中为 RTOS 生成什么样的代码,但我仍然不确定,我应该为 Linux 使用什么样的 IPC。对于第一个版本,任何保持行为的东西都可以。对于未来的版本,在目标上使用 Linux 可能是合理的,因此 IPC 的开销应该很小。

我发现了以下 IPC 机制:

  • Unix 信号(好像不是一个选项)
  • Unix 套接字(不仅仅是发送信号)
  • 信号量(少做,但我们可以使用全局整数将事件传递给对方)

是否有更合适的 IPC 解决方案可以满足这一要求?

【问题讨论】:

  • 你检查过 Boost Interprocess 吗?

标签: c++ c unix ipc rtos


【解决方案1】:

有几种可能:

【讨论】:

  • 我找到了不同的解决方案。已经有IPC到linux平台的端口了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多