[ i/o 模型 ] Reactor 事件處理模式流程

使用同步 I / O 模型(以 epoll_wait 爲例)實現 Reactor 模式,工作流程如下:
1. 主線程往 epoll 內核事件表中註冊 socket 上的讀就緒事件;
2. 主線程調用 epoll_wait 等待 socket 上有數據可讀;
3. 當 socket 上有數據可讀時,epoll_wait 通知主線程。主線程則將 socket 可讀事件放入請求隊列;
4. 睡眠在請求隊列中的某個工作進程被喚醒,它從 socket 讀取數據,並處理客戶請求,然後往 epoll 內核事件表中註冊該 socket 上的寫就緒事件;
5. 主線程調用 epoll_wait 等待 socket 可寫;
6. 當 socket 可寫時, epoll_wait 通知主線程,主線程則將 socket 可寫事件放入請求隊列;
7. 睡眠在請求隊列中的某個工作線程被喚醒,它往 socket 中寫入服務器客戶請求的結果;

發佈了53 篇原創文章 · 獲贊 9 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章