当前位置: 首页 > wzjs >正文

html网站制作模板各类设计型网站

html网站制作模板,各类设计型网站,杭州系统开发,东莞网络营销型网站bthread效率为什么更高? 1 基本概念 bthread是brpc中的用户态线程,也是协程的一种实现。其采用M:N模型,即多个用户线程映射到少量的系统线程上。 2 高效做法 用户态调度:避免内核态和用户态之间的切换开销,上下文切…

bthread效率为什么更高?

1 基本概念

bthread是brpc中的用户态线程,也是协程的一种实现。其采用M:N模型,即多个用户线程映射到少量的系统线程上。

2 高效做法

  1. 用户态调度:避免内核态和用户态之间的切换开销,上下文切换更快。系统线程的切换需要内核接入,而用户态线程的切换完全在用户空间完成,减少了系统调用和上下文切换的开销。
  2. 更轻量级的上下文切换:用户态线程的上下文数据量风小,只需要保存必要的寄存器状态,而内核线程需要保存更多的状态信息,比如浮点寄存器、信号处理器等。
  3. M:N模型:多个用户线程由较少的系统线程调度,减少了系统线程的创建和销毁开销,同时也减少了上下文切换的次数。系统线程的数量通常与cpu核心数相当,避免了过多的线程竞争。
  4. 无锁或细粒度锁的数据结构:任务队列使用无锁队列或细粒度锁,减少了线程间的竞争和等待时间,提高了并发性能。
  5. 工作窃取(work stealing):当某个工作线程的任务队列为空时,可以从其他线程的队列中窃取任务,实现负载均衡,避免线程空闲,提高资源利用率。
  6. 定制化的内存池管理:采用内存池技术,复用栈空间,减少内存分配和释放的开销,避免频繁的系统调用。
  7. 避免阻塞系统调用:通过异步IO或非阻塞IO配合事件驱动,减少了线程因IO操作而阻塞的情况,提高了CPU利用率。

进一步解释

  1. 用户态调度
    避免内核陷入;
    能够实现0系统调用(无需内核调度器);
类型上下文切换时长操作
用户态50 - 100 ns仅需保存/恢复必要的寄存器(约10个reg)
内核态1-5 us保存完整的上下文(浮点寄存器、信号处理器等);切换内核态堆栈
  1. M:N模型
维度M:N模型1:1模型(eg. pthread)
线程数量百万级用户线程千级系统线程
调度开销用户态协作式调度内核抢占式调度
内存占用每个线程约4-64KB栈每个线程约2-10MB
创建/销毁成本微秒级(纯用户态操作)毫秒级(需内核参与)
  1. 任务调度策略
  • 工作窃取算法
Task *steal_task()
{for (Worker &w : other_workers) {if (Task *t = w.queue.try_steal()) {return t;}}return nullptr;
}// 每个worker线程维护本地任务队列
// 空闲worker从其他worker的队列尾部窃取任务
// 减少锁竞争,提高CPU缓存命中率
  • 协作式调度
    显式yield让出cpu;
    避免不必要的抢占,减少上下文切换;
  1. 内存管理优化
  • 栈内存复用
class StackPool {
public:static constexpr int MAX_CACHED_STACKS = 1000;std::vector<void*> cached_stacks;void *alloc() {if (!cached_stacks.empty()) {return pop_back();}return ::malloc(STACK_SIZE);}void free(void *stack) {if (cached_stacks.size() < MAX_CACHED_STACKS) {cached_tasks.push_back(stack);} else {::free(stack);}}
};// 减少频繁的malloc/free
// 避免内存碎片

** 个人疑问?**
栈内存复用的场景是什么?

  1. 与异步I/O深度集成
  • 事件驱动架构
void async_read(int fd, void *buf, size_t size) {epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, ...);bthread_yield();// IO完成后由事件循环唤醒
}// 通过epoll/kqueue实现非阻塞IO
// IO等待期间自动yield,不阻塞worker线程

3 性能对比数据

参考网络数据,本人未验证。

场景bthread吞吐量pthread吞吐量
10k空循环任务1.2M tasks/sec120K tasks/sec
网络代理(1KB包)850K req/sec65K req/sec
数据库访问720K QPS45K QPS

4 bthread适用场景

  1. 高并发网络服务(eg. web服务器、rpc框架)
  2. 大规模并行计算(eg. 分布式任务调度)
  3. 低延迟交易系统(eg. 金融订单处理)
  4. 资源受限环境(eg. 嵌入式设备)

5 代价与限制

  • 开发复杂度高
    eg. 需要手动处理yield点

  • 无法利用多核并行
    单个worker线程仍绑定单个cpu核心

  • 调试困难
    用户态线程的堆栈跟踪不如内核线程直观

6 汇总原因

bthread的高效源自现代多核硬件和网络服务特征的深度优化,通过减少不必要的内核交互、精细化资源管理和智能调度策略,在特定场景下可带来数量级的性能提升。


文章转载自:

http://6jCzTzRG.qxkjy.cn
http://rm20SKZV.qxkjy.cn
http://UUHsTVFA.qxkjy.cn
http://FQEGGbJw.qxkjy.cn
http://pQwSUAOV.qxkjy.cn
http://R0I2TAE3.qxkjy.cn
http://Oc2TjYxE.qxkjy.cn
http://6pE93FKp.qxkjy.cn
http://rE2u8bU2.qxkjy.cn
http://wNpGpL7J.qxkjy.cn
http://JvhaLyVf.qxkjy.cn
http://dAMP7dHg.qxkjy.cn
http://ccbpS868.qxkjy.cn
http://9vNQlWbp.qxkjy.cn
http://krXwIiEe.qxkjy.cn
http://xtviZUmF.qxkjy.cn
http://7E3iuIka.qxkjy.cn
http://uTonznSP.qxkjy.cn
http://mF0mutPp.qxkjy.cn
http://wAgWz8cT.qxkjy.cn
http://3nu4xWQB.qxkjy.cn
http://LXjhQcun.qxkjy.cn
http://c8weeMka.qxkjy.cn
http://fpQAoVma.qxkjy.cn
http://rkCyznT9.qxkjy.cn
http://8pkkgRPG.qxkjy.cn
http://tBH36tV2.qxkjy.cn
http://8nS0iLua.qxkjy.cn
http://OMBJwPrO.qxkjy.cn
http://FnZQAECh.qxkjy.cn
http://www.dtcms.com/wzjs/719085.html

相关文章:

  • 简述电子商务网站建设的基本要求网站建设人员分工
  • 网站推广的方式?网站建设沈阳凯鸿
  • 盘锦网站网站建设贵阳网站建设方案
  • 越秀区建设水务局网站社区网站建设工作职责
  • 如何优化基础建站上海微网站
  • 中国建行官网首页绍兴seo排名外包
  • 凡科网的网站建设怎么做手机网站漂浮怎么做
  • 做的烂的网站句容市网站seo优化排名
  • 弹性盒子做自适应网站ftp如何上传网站
  • 优惠券推广网站怎么做株洲网站设计外包首选
  • 免费 网站 如何做网站开发服务费计入哪项费用
  • 汕头市营商环境建设监督局网站wordpress更新 ftp
  • 云存储做网站有免费的wordpress
  • 网站开发 参考文献网站选项卡
  • 站长统计黄页网站下载大全购物商城模板
  • 石狮网站建设联系电话靖江市建设行业协会网站
  • 中山市企业网站建设网站建设需要经历什么步骤
  • 微信分销网站建设价格舅舅建筑网
  • 网站外包制作网站开发是什么职位
  • 网站主题切换网站建设与管理和电子商务哪个好
  • 交友深圳网站建设做一个网站的流程
  • 网站模板使用wordpress 页面伪静态页面
  • 制作网站怎么用图片做背景电子商务的就业方向是什么
  • 厦门网站建设培训机构响应式网站排名如何
  • 那里做直播网站中小企业网络组网案例
  • 关于网站建设的英文歌什么是网络营销?
  • 怎么提高网站权重机械东莞网站建设0769
  • 设计素材网站破解网站字体颜色大小
  • 给公司做网站软件广州网站建设公司怎么选
  • p2p网站建设教程陇城科技网站建设