消息队列,c ++多线程

时间:2010-07-08 05:53:33

标签: c++ multithreading message-queue

我在c ++(而不是插槽/信号)上寻找跨平台多线程消息队列实现。如果它基于主题 - 观察者模式,那就更好了。

4 个答案:

答案 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。它们是跨平台的,上次我看起来他们有无锁的容器。