bprc-bthread梳理

本文主要探讨了BRPC框架中的Bthread,这是一种M->N的Green Threading实现,类似于Golang的Goroutine。文章首先介绍了BRPC在百度内部的重要性,并表达了作者对Goroutine的兴趣。接着,作者梳理了不同线程模型,包括一个连接对应一个线程、单线程Reactor和N:1线程库。最后,文章聚焦于Bthread,讨论了其定义、实现和使用时可能遇到的问题。
摘要由CSDN通过智能技术生成

BRPC是baidu内部自研的一套RPC框架,除了易用性、高性能之外,核心的一个亮点就是当中完整实现了一套M->N的Green Threading(类似Golang的Goroutine)。

1)BRPC在公司内部大量使用,每天的工作基本上都绕着brpc转也不为过;
2)因为自己最早是写C出身的,自然对Golang喜欢的不行,Goroutine也用得不要太开心,但是一直没有对Goroutine的原理进行学习。

借此机会,希望通过对bthread的梳理,能管中窥豹M->N Green Threading。

https://github.com/apache/incubator-brpc

线程模型梳理

Green Threading本质上也算是种线程模型,为了更好地理解Green Threading的价值,我们先八股地梳理下常见的线程模型。

一个连接对应一个线程

最基础的线程模型,大概的思路就是一个线程负责Accept Incoming请求,然后自己或者交给另一个线程负责执行业务逻辑。

常规的变(套)化(路):
1)ThreadPool:如果Acceptor自己执行业务逻辑的话,可能就会Hang住新Connection的建立;那么每次来一个新Connection,重新拉一Thread起来成本又太高,那就搞一个ThreadPool;
2)SO_REUSEPORT:ThreadPool顶多算是解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值