菜鸟笔记
提升您的技术认知

brpc 笔记

bthread(一) 前言bthread(二) 线程模型及bthreadbthread(三) bthread数据结构bthread(四) bthread用户接口和代码执行路径bthread(五) 无锁队列rq的代码实现bthread(六) 小结brpc的精华bthread源码剖析brpc介绍、编译与使用brpc源码解析(一)—— rpc服务添加以及服务器启动主要过程brpc源码解析(二)—— brpc收到请求的处理过程brpc源码解析(三)—— 请求其他服务器以及往socket写数据的机制brpc源码解析(四)—— Bthread机制brpc源码解析(五)—— 基础类resource pool详解brpc源码解析(六)—— 基础类socket详解brpc源码解析(七)—— worker基于ParkingLot的bthread调度brpc源码解析(八)—— 基础类EventDispatcher详解brpc源码解析(九)—— 基础类WorkStealingQueue详解brpc源码解析(十)—— 核心组件bvar详解(1)简介和整体架构brpc源码解析(十一)—— Reducer类和Adder类解析brpc源码解析(十二)—— 核心组件bvar详解 AgentGroup类详解brpc源码解析(十三)—— 核心组件bvar详解(4)combiner详解brpc源码解析(十四)—— 核心组件bvar详解 sampler详解brpc源码解析(十五)—— bthread栈创建和切换详解brpc源码解析(十六)—— 作为client的连接建立和处理详解brpc源码解析(十七)—— bthread上的类futex同步组件butex详解brpc源码解析(十八)—— MPSC队列ExecutionQueue详解brpc源码解析(十九)—— 双buffer数据结构DoublyBufferedData详解brpc源码解析(二十)—— 用于访问下游的Channel类详解

bthread(一) 前言

阅读 : 1169

代码开源

建议配合代码库看,一切以代码为准:https://github.com/apache/incubator-brpc/tree/master/src/bthread

感受

bthread为brpc的核心,设计的初衷其实是在充分利用cpu的情况下保证数据的局部性,在设计过程中遇到的各种问题戈大神团队参考了多种linux内核原语进行了重写和实现,其中比较核心的设计为每TaskGroup的_rq无锁队列的设计以及work stealing调度的各种逻辑实现,目的都是在尽可能少加锁的情况下实现线程调度的功能。

备注

本人当前就职于百度,内网可搜到相关wiki全部内容,鉴于brpc代码已开源故将总结wiki分享于此,希望和更多大佬有交流的机会,若文档中有任何侵权行为会即时删除,谢谢。