本教程转自:http://blog.csdn.net/kobejayandy/article/details/20163527
在开始之前先把guid里面提到的几个ZeroMQ的特性列一下吧:
(1)ZeroMQ有自己的I/O线程来异步的处理I/O,而且后台采用了无锁的数据结构
(2)在ZeroMQ中,所有的组件都可以动态的加入和移除,而且可以启动组件以任何的顺利,例如我们可以先启动request,再启动response,依然可以工作,而且还会自动的重连接。
(3)如果有需要的话,会自动的将message进行排队,当然这都是有一套的模式的,一般情况下会尽量早的将数据发送到receiver。
(4)当缓冲的message队列满了以后,ZeroMQ有自己的行为,有的组件会阻塞,有的则会将message抛弃。
(5)底层的通信可以采用各种各样的都行,例如TCP,IPC啥的。
(6)它会自动的处理那些比较慢而且阻塞的reader
(7)支持message的路由
(8)ZeroMQ确保全部的数据被receiver接收到,例如发送10K,那么也接受到10K
(9)它发送的数据格式是二进制,所以对发送的内容无要求
(10)ZeroMQ会自动处理网络错误,而且会自动尝试恢复
(11)节能。。。(我擦,居然还有这个)
好了,先来看一下poller这个东西吧,蛮有意思的,类似与epoll或者java里面的selector,
在前面的例子中我们都只是创建一个socket,那如果我们要创建两个socket在同一个线程