标签:destory 进程 在线 顺序 自动 传递 proc 信号量 容器
ZeroMQ中的字符串是指定长度的,也就是不会向C语言中一样,使用0作为最后的字符串的表示。因此,当接受字符串数据的时候是纯净的字符串数据,需要你自己处理字符串结尾的工作。
ZeroMQ应用程序总是创建一个上下文开始,然后用它来创建套接字。应该在进程中只创建并使用一个上下文。上下文是单个进程中所有套接字的容器,并充当了inproc套接字的传输工具。
在主代码开始执行一个zmq_ctx_new(),在代码最后执行一个zmq_ctx_destory()。如果套接字没有关闭,则zmq_ctx_destory函数将一直挂起,即使关闭了所有的套接字,如果有悬而未决的连接或者发送,zmq_ctx_destory也将等待下去,除非你在关闭这些套接字之前将linger设置为0.
消息对象 套接字 上下文共同组成了ZeroMQ对象。 处理完消息的那一刻,总是用zmq_msg_close()关闭它。
当你退出程序的时候,关闭你的套接字,然后调用zmq_ctx_destory()销毁上下文。
不要在多线程中使用同一个套接字,记住不要这样做。
关闭每个有持续请求的套接字 首先设置一个低的linger值,然后关闭套接字。
最后是销毁上下文,这将导致连接到的线程的阻塞的接受或者是发送都将返回一个错误,捕获该错误,然后在该线程中设置linger,关闭套接字并退出,不要多次销毁同样的上下文,在主线程中的zmq_ctx_destory调用将会保持阻塞,直到它直到的所有套接字都已经安全的关闭了。
ZeroMQ的特点
在后台线程异步处理IO,这些线程使用无锁数据结构与应用程序线程进行通讯,所以并发应用程序不需要锁,信号量,
组件可以动态的来去自如,而zeromq会自动的重新连接,这意味着你可以在任何顺序启动组件,可以SOA 面向服务的架构,其中的服务可以在任何时间加入和离开网络。
自动对消息排队。
有一个处理队列过满的方法,当队列满的时候,会自动阻止发件人或者丢弃消息,这取决于你是哪一种模式(这两种模式就是TCP和UDP)
可以让应用程序通过任何的传输协议来互相交流,这些协议可以是TCP、多播、进程内,进程间
它使用依赖消息传递模式的不同策略,安全的处理速度满,阻塞的读取者。
可以采用多种模式,请求应答,发布订阅来将消息路由,
可以创建代理来排队、转发、或者通过一个调用来捕获消息。
使用在线路上原封不动的帧来传递整个消息。如果你写了10K的消息数据,你讲获得10K的消息数据
不对消息加强任何格式,是二进制对象,
可以智能的处理网络错误,有时候会重试。
可以减少能源的消耗,等等等等
标签:destory 进程 在线 顺序 自动 传递 proc 信号量 容器
原文地址:https://www.cnblogs.com/randyniu/p/9219142.html