【brpc学习实践十二】bthread

本文详细介绍了百度的bthread库,它是一种高效的M:N线程库,用于充分利用多核CPU。文章通过代码剖析展示了bthread的初始化、任务提交、任务执行和栈切换过程,以及与协程的对比。bthread通过工作窃取机制保证任务执行,避免线程局部变量失效问题,并提供类似线程同步原语的接口。在实际使用中,需注意避免依赖线程级变量,使用bthread_key_create和bthread_getspecific来处理业务数据。bthread的高效性得益于其栈空间的用户态切换,减少了系统调用开销。

概览

bthread(代码)是baidu-rpc使用的M:N线程库,是其稳定和高效的关键组件。能更好地利用多核cpu,能在pthread中运行,需要注意的是,bthread的work stealing机制会da让任务pthread发生切换,从而让thread_local变量不可信,通常在bthread_usleep或这join的时候就有可能发生切换。

thread_local SomeObject obj;
...
SomeObject* p = &obj;
p->bar()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值