epoll一個簡單模型設計

Epoll模型主要負責對大量併發用戶的請求進行及時處理,完成服務器與客戶端的數據交互。其具體的實現步驟如下:
(a) 使用epoll_create()函數創建文件描述,設定將可管理的最大socket描述符數目。
(b) 創建與epoll關聯的接收線程,應用程序可以創建多個接收線程來處理epoll上的讀通知事件,線程的數量依賴於程序的具體需要。
(c) 創建一個偵聽socket描述符ListenSock;將該描述符設定爲非阻塞模式,調用Listen()函數在套接字上偵聽有無新的連接請求,在 epoll_event結構中設置要處理的事件類型EPOLLIN,工作方式爲 epoll_ET,以提高工作效率,同時使用epoll_ctl()註冊事件,最後啓動網絡監視線程。
(d) 網絡監視線程啓動循環,epoll_wait()等待epoll事件發生。
(e) 如果epoll事件表明有新的連接請求,則調用accept()函數,將用戶socket描述符添加到epoll_data聯合體,同時設定該描述符爲非阻塞,並在epoll_event結構中設置要處理的事件類型爲讀和寫,工作方式爲epoll_ET.
(f) 如果epoll事件表明socket描述符上有數據可讀,則將該socket描述符加入可讀隊列,通知接收線程讀入數據,並將接收到的數據放入到接收數據的鏈表中,經邏輯處理後,將反饋的數據包放入到發送數據鏈表中,等待由發送線程發送。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章