我在c ++(而不是插槽/信号)上寻找跨平台多线程消息队列实现。如果它基于主题 - 观察者模式,那就更好了。
答案 0 :(得分:3)
ZeroMQ看起来可能就是你要找的东西。
有大量的例子,例如这个例子:http://www.zeromq.org/blog:multithreaded-server,这可能是你想要实现的。
答案 1 :(得分:1)
看看“ISL”开源项目(代表“Internet服务器库”,C ++),SVN-repository位于http://svn.storozhilov.com/isl/ - isl :: AbstractMessageBroker类是一个很好的候选者你工作的地下室。对于任何消息代理子系统(DBus,JMS,AMQP等),这都是非常简单但可扩展的框架。每个客户端由来自预启动线程池的2个线程提供服务:一个用于从传输和处理消息接收消息,另一个用于向传输发送消息。因此,实际上为了实现您的消息传递系统,您必须至少覆盖以下三种虚拟方法:
isl::AbstractMessageBroker::receiveMessage(...);
isl::AbstractMessageBroker::processMessage(...);
isl::AbstractMessageBroker::sendMessage(...);
使用示例在trunk / examples / EchoMessageBroker目录中。使用回显消息响应客户端,终止“bye \ r \ n”消息上的连接,在SIGINT上终止自身。
答案 2 :(得分:0)
您可以试用Apache ActiveMQ。 http://activemq.apache.org。相当健壮。我们将它用于FIX消息传递平台,响应迅速且易于配置。
答案 3 :(得分:0)
查看英特尔的开源库Threading Building Blocks。它们是跨平台的,上次我看起来他们有无锁的容器。