MOOON-scheduler核心設計圖(初稿)

按以下思路進行設計,非最終設計圖,有等進一步思考,以發現問題,需要達到以下目的:
  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會做相應的處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章