Skip to content

ronaldo8210/libro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libro 非对称协程库


主要用途

  • 适用于网络I/O密集型业务,典型的有:
    • 广告系统中AdExchange平台会对接多家DSP,媒体发送的一次广告请求到达AdExchange后,AdExchange会将广告请求透传到N个DSP,并将各个DSP的广告返回进行竞价。向N个DSP的广告的请求/返回这一过程可以使用协程来完成。
    • DSP系统一般由DMP、索引服务、算法服务等组成,一般是由AdServer(Mixer)服务器接收到AdExchange发送来的广告请求,先请求DMP拿到用户的profile,再根据用户profile请求索引服务得到广告候选集,再请求算法服务得到排序后最优的广告,最后将广告返回到AdExchange
  • 编程方法:以DSP为例,将请求下游各个服务的过程抽象为一个单一的任务,以同步阻塞的方式编写代码:
    • 代码形式为 {send_to(DMP); recv_from(DMP); send_to(索引服务); recv_from(索引服务); send_to(算法服务); recv_from(算法服务); }
    • 协程库负责任务的调度、挂起、切出、重入

协程调度算法

  • 单个Processor内的协程调度方式类似星切调度算法:调度过程 -> 协程A -> 调度过程 -> 协程B -> 调度过程 -> …
  • 暂不支持一个协程指定调度其他协程

线程模型

  • 单个Scheduler线程(负责将协程任务分发到各个Processor线程)
  • N个Processor线程(协程任务处理主框架)
  • M个Reactor线程(网络事件处理)
  • 单个多级时间轮定时器线程(超时事件处理)

About

An asymmetric coroutine library for C++11

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published