核心思路是,將主線程的IO讀寫任務(wù)拆分出來(lái)給一組獨(dú)立的線程執(zhí)行,使得多個(gè) socket 的讀寫可以并行化
主線程負(fù)責(zé)接收建立連接的請(qǐng)求,獲取socket放到全局等待處理隊(duì)列
主線程處理完讀事件之后,通過(guò)Round Robin將這些連接分配給IO線程(并不會(huì)等待隊(duì)列滿)
主線程阻塞等待IO線程讀取socket完畢
主線程通過(guò)單線程的方式執(zhí)行請(qǐng)求命令,請(qǐng)求數(shù)據(jù)讀取并解析完成,但并不執(zhí)行
主線程阻塞等待IO線程將數(shù)據(jù)回寫socket完畢
解除綁定,清空等待隊(duì)列
該線程有如下特點(diǎn):
IO線程要么同時(shí)在讀socket,要么同時(shí)在寫,不會(huì)同時(shí)讀或?qū)?/p>
IO線程只負(fù)責(zé)讀寫socket解析命令,不負(fù)責(zé)命令處理(主線程串行執(zhí)行命令)