一种基于协程池的构想

背景

从进程到线程再到协程,程序设计师们似乎永远在追求着更快的效率和更小的开销。
线程的创建是有开销的,从线程的角度来看,本质上就是处理一个任务,从C++的角度来看,就是std::thread或者pthread_create注册一个函数。与其让线程执行完了就去释放,不如采用池化的思想,通常可能是做成负载均衡的,用一个管理线程去动态检测线程池的负载,来判断是创建还是销毁线程。此外,维护一个任务队列,全局或者采用thread_local结合任务窃取都是可以的,并且再加上事件循环的思想,就可以实现任务分发和执行。

协程作为一种用户态的,更轻量的设计,理应得到更好的运用。一般co_await表示等待IO或者让出。是不是可以有这种一种设计,设计一个协程池,用户向协程池提交任务,由协程池来调度,当有recv或者send的任务时就让出,去执行另一个任务。这样有一个问题,同一个任务可能不会在同一个线程执行,需要考虑thread_local的问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值