lsnepoll高性能io封裝martin帶你們玩_第1頁
lsnepoll高性能io封裝martin帶你們玩_第2頁
lsnepoll高性能io封裝martin帶你們玩_第3頁
lsnepoll高性能io封裝martin帶你們玩_第4頁
lsnepoll高性能io封裝martin帶你們玩_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本課講師:Martin老師Martin老師帶你們玩Epoll主講martin老師:2390560487講師介紹動腦學院-Martin老師王鵬程QQ:2390560487網易企業郵局架構師,老板郵局的首席架構師,任職于多家上市公司。十二年行業(C/C++)開發經驗,一直專注于Linux服務器端高并發應用程序和分布式大數據存儲系統的開發和架構。

課程提綱Epoll該怎么玩?Coding......架構師的知識樹Epoll與Reactor設計模式高效的餐廳服務如何實現一個顧客來就餐,一個服務員在顧客點菜期間全程陪同服務!一個人來就餐,一個服務員去服務,然后客人會看菜單,點菜。服務員將菜單給后廚。二個人來就餐,二個服務員去服務……五個人來就餐,五個服務員去服務……一百個人呢?Epoll-Reactor設計模式事件驅動流程獲取就緒事件Read,Process或Write注冊待處理事件epoll_ctl

就緒事件隊列循環等待監聽/連接socket上的事件epoll_wait未就緒事件隊列內核Reactor優點1)響應快,不必為單個同步時間所阻塞,雖然Reactor本身依然是同步的;

2)編程相對簡單,可以最大程度的避免復雜的多線程及同步問題,并且避免了多線程/進程的切換開銷;

3)可擴展性,可以方便的通過增加Reactor實例個數來充分利用CPU資源;4)可復用性,reactor框架本身與具體事件處理邏輯無關,具有很高的復用性;Epoll-IO多路復用1.創建EPOLL句柄intepoll_create(intsize);

2.向EPOLL對象中添加、修改或者刪除感興趣的事件intepoll_ctl(intepfd,intop,intfd,structepoll_event*event);

op取值:EPOLL_CTL_ADD添加新的事件到epoll中EPOLL_CTL_MOD修改EPOLL中的事件

EPOLL_CTL_DEL刪除epoll中的事件

events取值:

EPOLLIN表示有數據可以讀出(接受連接、關閉連接)EPOLLOUT表示連接可以寫入數據發送(向服務器發起連接,連接成功事件)EPOLLERR表示對應的連接發生錯誤 EPOLLHUP表示對應的連接被掛起

3.收集在epoll監控的事件中已經發生的事件intepoll_wait(intepfd,structepoll_event*events,intmaxevents,inttimeout);

Epoll-IO多路復用關鍵結構:structepoll_event{ __uint32_tevents; epoll_data_tdata;}typedefunionepoll_data{ void*ptr; intfd; uint32_tu32; uint64_tu64;}epoll_data_tEpoll該怎么玩關鍵問題?如何解決事件與連接socket句柄掛鉤,快速完成檢索?如何突破系統默認狀態

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論