Skip to content

Latest commit

 

History

History
84 lines (48 loc) · 3.01 KB

File metadata and controls

84 lines (48 loc) · 3.01 KB

zmq源码分析-总结

整体架构

structure

基本流程

base_flow

对象交互

void *requester = zmq_socket (context, ZMQ_REQ);
zmq_connect (requester, "tcp://localhost:5555");

obj_mutual

类层次

class_level

  • object_t 主要用于发送命令和处理命令,所有继承object_t的子类都具备该类的功能;
  • io_thread_t 内含一个poller,可监听句柄的读、写、异常状态,继承自object_t,具有接收命令、处理命令、发送命令的功能;
  • io_object_t 可以获取一个io_thread_t的poller,从而具备poller功能,所有继承自该类的子类都具有pollere功能,可监听句柄的读、写、异常状态;
  • reaper_t zmq的回收线程;
  • own_t zmq的对象树结点,或者说多叉树的结点,其主要用于对象的销毁,可以想到,对象的销毁就是这棵树的销毁过程,必须要使用深度优先的算法来销毁;
  • tcp_connector_t zmq_socket的连接器,使用她来建立tcp连接;
  • tcp_listener_t zmq_socket的监听器;
  • stream_engine 负责处理io事件中的一种----网络事件,把网络字节流转换成zeromq的msg_t消息传递给session_base_t;
  • session_base_t 管理zmq_socket的连接和通信,主要与engine进行交换;
  • socket_base_t zeromq的socket,在zmq中,被当成一种特殊的”线程“,具有收发命令的功能。

性能测试

性能测试案例

最佳实践

  1. 线程间通信推荐使用pair类型socket,而不是mutex这一类传统的线程通信方法;

查错指南

err_flow

参考