我正在设计一个 C++ 应用程序,它由大量独立的插件或模块组成,这些插件或模块不时产生对其他插件有用的结果。例如,分析模块遇到一些有用的数据并将其发送给操作模块。每个模块将在自己的线程中运行;这样一来,分析模块可以继续收集数据,而操作模块则以它们可以处理的速度处理数据。
我正在寻找合适的消息传递架构/设计模式。 This stackoverflow thread给出了一些建议,但我不确定普通接口(interface)是否可以在多线程环境中工作。
我正在考虑拥有某种基于 channel 的架构,其中每个模块在 channel 上广播一些内容,并且无论哪个模块对其感兴趣 - 都会收听。如果在自由许可下有一些现成的库,那就更好了。
最佳答案
我一直在使用 ACE(自适应通信环境)进行线程管理、TCP/UDP 通信、互斥关系和编程。
ACE 是平台核心模式调用的高度可移植集合。最重要的是,它是免费的、开源的,并且目前正在积极开发中。
http://www.cs.wustl.edu/~schmidt/ACE.html
对于您的应用程序,我建议专门查看“ACE_Task_Base”类以提供多线程,以及“ACE_Reactor”类以注册您的异步回调架构的所有处理程序。
关于c++ - 多线程C++应用中的插件/模块通信方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004213/