按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的:
  1. 同时支持线程和进程模式(做了抽象)
  2. Service不和线程绑定
  3. Service独占线程池或进程(进程下再划分线程池)
  4. Session和线程绑定,不跨线程
  5. Service下可以有0到多个Session
  6. 一个Session可以0到多个 子 Session,不限制层级
  7. 子Session和父Session由同一个线程调度
  8. Service的ID从0开始的无符号32位整数
  9. Session的ID从1 开始的无符号32位整数,0被Service占用,以简化程序设计(在后续会讲到原因)
MOOON-scheduler核心设计图(初稿)


在进程模型,CKernelThread和CServiceThread个数是相等的,而且线程是一对一的。CServieProcess会fork出一个进程,这个进程会创建CServicePool,CServiceThread阻塞同步的接收CProcessMessageBridge发过来的消息,然后处理,直接到处理完后CKernelThread才会去处理下一个消息。但在这过程中,CService和CSession可以输出需要发送到其它Service或节点的消息,CProcessMessageBridge会做相应的处理。

相关文章:

  • 2021-09-13
  • 2021-12-30
  • 2022-02-02
  • 2021-10-02
  • 2021-06-25
  • 2022-12-23
  • 2021-10-06
猜你喜欢
  • 2022-02-14
  • 2022-01-07
  • 2022-12-23
  • 2021-06-09
  • 2021-12-07
  • 2022-02-24
  • 2021-09-10
相关资源
相似解决方案