天天看點

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

按以下思路進行設計,非最終設計圖,有等進一步思考,以發現問題,需要達到以下目的:

同時支援線程和程序模式(做了抽象)

Service不和線程綁定

Service獨占線程池或程序(程序下再劃分線程池)

Session和線程綁定,不跨線程

Service下可以有0到多個Session

一個Session可以0到多個

子 Session,不限制層級

子Session和父Session由同一個線程排程

Service的ID從0開始的無符号32位整數

Session的ID從1

開始的無符号32位整數,0被Service占用,以簡化程式設計(在後續會講到原因)

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

在程序模型,CKernelThread和CServiceThread個數是相等的,而且線程是一對一的。CServieProcess會fork出一個程序,這個程序會建立CServicePool,CServiceThread阻塞同步的接收CProcessMessageBridge發過來的消息,然後處理,直接到處理完後CKernelThread才會去處理下一個消息。但在這過程中,CService和CSession可以輸出需要發送到其它Service或節點的消息,CProcessMessageBridge會做相應的處理。