繁体   English   中英

用于多线程linux应用程序的信号样式IPC

[英]Signal style IPC for multithreaded linux applications

我有为实时操作系统(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解决方案可以满足此要求?

有几种可能性:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM