国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
socket 模型簡介

socket 模型簡介

關鍵字: socket 線程模型

共同點:
ServerSocket serverSocket = new ServerSocket(80);
sokcet s = serverSocket.accept();

區(qū)別:
1 原始:(線程池)
每來一個請求分配新的一個線程來處理,繼續(xù)等待下一個請求,這個過程中每一個線程一直等待數(shù)據的到來。這種情況導致隨并發(fā)量多 線程數(shù)增加,系統(tǒng)消耗比較大
2 select(2個線程)
每來一個請求則把s給select,繼續(xù)等待下一個請求。來數(shù)據時select里copy一個套接字,來處理緩沖區(qū)數(shù)據(這個過程很耗時),因當時的條件所限制select里只能放64個套接字,也就是說并發(fā)最大量為64. 一個線程處理接受,另一個進程處理套接字處理數(shù)據
3 poll(2個線程)
每來一個請求把s給poll(push進去),繼續(xù)等待下一個請求,來數(shù)據時從push里彈出套接字(不用copy了),處理緩沖區(qū)的數(shù)據。支持并發(fā)可以數(shù)千個。
一個線程處理接受,另一個進程處理套接字處理數(shù)據
4 epoll(2個線程)
每來一個請求把s給epoll(push進去),來數(shù)據時緩存,需要處理數(shù)據時,把緩沖區(qū)的數(shù)據和套接字一起返回,這樣節(jié)省了readBuffer的時間,效率更高
一個線程處理接受,另一個進程處理套接字處理數(shù)據

下面深入講一下epoll模型和iocp模型的異同之處

目前國內的網游研發(fā),在服務器使用的開發(fā)平臺方面,win和linux的比例各占多少,我一時半會也沒有準確數(shù)據,但從我了解的這么多公司情況來看,用win系統(tǒng)的還是比較多一點,這些企業(yè)一般都是比較單純的網游公司,而用linux的則多數(shù)是一些傳統(tǒng)的互聯(lián)網公司,比如網易和騰訊。

網游服務器用win還是linux,向來都是大家關注的話題。我想,原因可能很多,但此處不想過多論述這個問題,為避免多費口舌,我還是明確表明一下自己的觀點:我是推薦用linux作開發(fā)的,雖然我也是剛轉來作linux平臺下的開發(fā)。

那么,說具體一點。但凡作過比較深入的網絡編程的人,都會知道,在win平臺下,高效的IO模型是IOCP,而在linux底下則是epoll。那么,epoll與iocp之間到底有哪些異同之處呢?

首先,我們看一下它們相同的地方。

兩者都是處理異步IO的高效模型,這種高效,除了“異步處理”這個共同的特征之外,二者都可以通過指針攜帶應用層數(shù)據:在IOCP里,應用層數(shù)據可以通過單句柄數(shù)據和單IO數(shù)據來與IOCP底層通信;而在epoll里,可以通過epoll_data里的"void*ptr"來傳遞。這是一種很重要的思想,也是它們高效的原因所在:當事件的通知到來時,它不僅告訴你發(fā)生了什么樣的事件,還同時告訴這次事件所操作的數(shù)據是哪些。

那么,epoll和iocp到底又有什么不同呢?

以我目前粗淺的使用經驗來看,至少可以得到以下結論:

1.iocp是在IO操作完成之后,才通過get函數(shù)返回這個完成通知的;而epoll則不是在IO操作完成之后才通知你,它的工作原理是,你如果想進行IO操作時,先向epoll查詢是否可讀或可寫,如果處于可讀或可寫狀態(tài)后,epoll會通過epoll_wait函數(shù)通知你,此時你再進行進一步的recv或send操作。

2.在1的基礎上,我們其實可以看到,epoll僅僅是一個異步事件的通知機制,其本身并不作任何的IO讀寫操作,它只負責告訴你是不是可以讀或可以寫了,而具體的讀寫操作,還要應用層自己來作;但iocp的封裝就要多一些,它不僅會有完成之后的事件通知,更重要的是,它同時封裝了一部分的IO控制邏輯。從這一點上來看,iocp的封裝似乎更全面一點,但是,換個角度看,epoll僅提供這種機制也是非常好的,它保持了事件通知與IO操作之間彼此的獨立性,使得epoll的使用更加靈活。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
EPOLL和IOCP比較
IOCP 詳解
Web服務器之Nginx詳解(理論部分) - Share your knowledge … - 51CTO技術博客
libevent編程疑難解答
高性能服務端漫談
網絡編程模型綜述 之 成熟的IO框架介紹
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服