原文:zeromq源码分析笔记之无锁队列ypipe_t(3)

在上一篇中说到了mailbox t的底层实际上使用了管道ypipe t来存储命令。而ypipe t实质上是一个无锁队列,其底层使用了yqueue t队列,ypipe t是对yueue t的再包装,所以我们先来看看yqueue t是怎么实现的。 yqueue t yqueue t是一个高效的队列,高效体现在她的内存配置上,尽量少的申请内存,尽量重用将要释放的内存。其实,容器的设计都会涉及这点 高效的 ...

2016-01-18 11:45 6 4895 推荐指数:

查看详情

zeromq源码分析笔记之架构(1)

1、zmq概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。引用云风的话来说: ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。它有自己的模式,不同于更底层的点对点通讯 ...

Wed Jan 13 20:40:00 CST 2016 2 8559
Java高并发之无与Atomic源码分析

目录 无即无障碍的运行, 所有线程都可以到达临界区, 接近于无等待. 无采用CAS(compare and swap)算法来处理线程冲突, 其原理如下 CAS原理 CAS包含3个参数CAS(V,E,N).V表示要更新的变量, E表示预期值, N表示新值. 仅当V值等于E值时 ...

Thu May 17 08:02:00 CST 2018 0 5172
zeromq源码分析笔记之线程间收发命令(2)

zeromq源码分析笔记之架构说到了zmq的整体架构,可以看到线程间通信包括两类,一类是用于收发命令,告知对象该调用什么方法去做什么事情,命令的结构由command_t结构体确定;另一类是socket_base_t实例与session的消息通信,消息的结构由msg_t确定。命令的发送与存储 ...

Sat Jan 16 05:00:00 CST 2016 1 4281
多线程编程之无队列

关于无队列的概念与实现,可以参考博文《无队列的实现》,主要涉及到的知识点包括CAS原子操作、无队列的链表实现、无队列的数组实现以及ABA问题。   下面借鉴了《多线程的那点儿事(之无队列)》的代码,说明两个线程(一个添加一个读取数据)之间的无队列,可以不借助线程互斥方法就能够达到并行 ...

Sat Dec 09 03:17:00 CST 2017 0 1566
消息队列库——ZeroMQ

消息队列库——ZeroMQ ZeroMQ(简称ZMQ)是一个基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。 ZMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散 ...

Wed Jan 11 23:04:00 CST 2017 0 14613
ReentrantLock之公平源码分析

  本文分析的ReentrantLock所对应的Java版本为JDK8。   在阅读本文前,读者应该知道什么是CAS、自旋。 本文大纲   1.ReentrantLock公平简介  2.AQS  3.lock方法  4.unlock方法 1. ReentrantLock公平简介 ...

Fri Apr 19 23:14:00 CST 2019 0 615
.net源码分析 – List<T>

通过分析源码可以更好理解List<T>的工作方式,帮助我们写出更稳定的代码。 List<T>源码地址: https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System ...

Sat Apr 09 08:53:00 CST 2016 21 4408
消息队列ZeroMQ(C++)

  ZMQ是什么?   这是个类似于Socket的一系列接口,他跟Socket的区别是:普通 的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的 ...

Sun Jun 05 01:54:00 CST 2016 0 15270
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM