按以下思路进行设计,非最终设计图,有等进一步思考,以发现问题,需要达到以下目的:
  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占用,以简化程序设计(在后续会讲到原因)

在进程模型,CKernelThread和CServiceThread个数是相等的,而且线程是一对一的。CServieProcess会fork出一个进程,这个进程会创建CServicePool,CServiceThread阻塞同步的接收CProcessMessageBridge发过来的消息,然后处理,直接到处理完后CKernelThread才会去处理下一个消息。但在这过程中,CService和CSession可以输出需要发送到其它Service或节点的消息,CProcessMessageBridge会做相应的处理。
本文转自eyjian 51CTO博客,原文链接:http://blog.51cto.com/mooon/909898,如需转载请自行联系原作者

MOOON-scheduler核心设计图(初稿)相关推荐

  1. React Fiber源码逐个击破系列-scheduler

    Scheduler是React中相对独立的模块,用于实现类似浏览器requestIdleCallback的功能.也是React16实现time slicing最核心的一个模块. 在我阅读React源码 ...

  2. scrapy源码2:scheduler的源码分析

    一. scheduler核心 Scheduler主要负责scrapy请求队列的管理,即进队与出队.进一步来说,会涉及到队列的选择,队列去重,序列化. from_crawler(cls, crawler ...

  3. (转)start_kernel 代码分析

    head-common.S ---具体做了哪些动作 ---跳转到init/main.c ---b start_kernel //关于start_kernel的强文深入理解linux内核,第八章 mai ...

  4. 用户界面设计的一些方法和基本原则

    文/ openself 什么是用户界面? 用户界面(UI,User Interface)也称人机界面,是人机交互.操作逻辑和界面表现的整体设计.每一种设计都有其对应的职业角色,其中,人机交互的设计人员 ...

  5. 从无栈协程到C++异步框架

    导语 在前面的文章中我们尝试从 C++17 和 C++20 的角度分别探讨过其中无栈协程的包装机制和使用, 但其中的设计由来, 原理, 剥析的并不多. 这也导致对相关特性不太熟悉的读者要理解相关内容存 ...

  6. 从无栈协程到 C++异步框架

    作者:fangshen,腾讯 IEG 游戏客户端开发工程师 导语 本文我们将尝试对整个 C++的协程做深入浅出的剥析, 方便大家的理解. 再结合上层的封装, 最终给出一个 C++异步框架实际业务使用的 ...

  7. 基于h5的风云网球网站的设计

    目 录 1绪 论 1 1.1 选题背景及意义 1 1.2 国内外研究现状 2 1.3本章小结 2 2 前端开发及相关技术 4 2.1 HTML5前端开发环境 4 2.2 HTML5前端开发工具 4 2 ...

  8. arm Linux系统启动之----start_kernel函数

    head-common.S ---具体做了哪些动作 ---跳转到init/main.c ---b start_kernel //关于start_kernel的强文深入理解linux内核,第八章 mai ...

  9. Quartz学习总结之核心接口Scheduler、Job

    参考文章:https://www.cnblogs.com/mengrennwpu/p/7141986.html 核心接口如下: 接口 含义 Scheduler scheduler的主要API接口 Jo ...

最新文章

  1. selenium webdriver python 环境搭建
  2. HDU 5008 Boring String Problem ( 后缀数组求本质不同第k大子串)
  3. mysql binlog purge_正确清理mysql binlog日志方法
  4. 拆轮子系列--RxJava理解(三)--observeOn
  5. 如何解决Maple的应用在数学中
  6. 磊科nw336+linux驱动程序,磊科NW336无线网卡驱动程序
  7. 【代码笔记】Web-JavaScript-JavaScript 运算符
  8. Android TV上 WebView播放视屏与TV自带画中画不兼容处理及分析
  9. 数据结构系列之大话数据结构
  10. mysql手册04_视图
  11. Python实现简单的excel对比工具
  12. 伺服电机和步进电机的区别
  13. 3种方式构造HTTP请求详解(HTTP4)
  14. mysql查询所有学生各科成绩按照总成绩降序排列
  15. uniapp调用手机摄像头_uniapp原生插件开发之调用原生方法(android)
  16. 每日十道面试题(五)
  17. Vue.js结合Canvas制作二维码和图片的合成(qrcanvas + html2canvas)
  18. 4 运动动力学约束下的路径搜索
  19. 2023 开工大吉!爆料各司年终奖
  20. 精致又小巧的3款黑科技软件,一旦使用,难以割舍

热门文章

  1. c语言malloc函数用法_小白对c语言数组的基础总结
  2. jQuery、ajax添加Json数据
  3. 解决pip安装时,下载速度慢的问题
  4. Microsoft Azure Site Recovery (1) 安装VMM服务器代理
  5. JPA 中文乱码问题
  6. dede 怎样调用其它栏目的文章或者缩略图列表且有分页效果?
  7. CentOS7.2 安装Squid3.5及正、反向代理设置
  8. 【MyBatis学习13】MyBatis中的二级缓存
  9. Java SE(2)
  10. zabbix自动发现实现批量监控docker状态