按以下思路進行設計,非最終設計圖,有等進一步思考,以發現問題,需要達到以下目的:
同時支援線程和程序模式(做了抽象)
Service不和線程綁定
Service獨占線程池或程序(程序下再劃分線程池)
Session和線程綁定,不跨線程
Service下可以有0到多個Session
一個Session可以0到多個
子 Session,不限制層級
子Session和父Session由同一個線程排程
Service的ID從0開始的無符号32位整數
Session的ID從1
開始的無符号32位整數,0被Service占用,以簡化程式設計(在後續會講到原因)

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