中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中并發服務器的實現模式有哪些

發布時間:2021-07-16 14:37:39 來源:億速云 閱讀:121 作者:小新 欄目:服務器

這篇文章主要介紹了Linux中并發服務器的實現模式有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1>單線程或者單進程

相當于短鏈接,當accept之后,就開始數據的接收和數據的發送,不接受新的連接,即一個server,一個client

不存在并發。

2>循環服務器和并發服務器

1.循環服務器:一個server只能一次只能接收一個client,當當前client結束訪問之后才能進行下一個client的連接。

2.并發服務器:一個server同一時間可以響應很多客戶端的訪問。

3>select+多線程模式

并發服務器的三種實現方式

1.多進程并發服務器

是指TCP連接后,每一個客戶機的請求并不由服務器直接處理,而是由服務器創建一個子進程來處理

2.多線程并發服務器

多進程服務器是對多進程的服務器的改進,由于多進程服務器在創建進程時要消耗較大的系統資源,所以用線程來取代進程,這樣服務處理程序可以較快的創建。據統計,創建線程于創建進程要快10100倍,所以又把線程稱為“輕量級”進程。進程與進程不同的是:一個進程內所有線程共享相同的全局內存,全局變量等信息。

是指TCP連接后,每一個客戶機的請求并不由服務器直接處理,而是由服務器創

3.多路復用I/O

I/O是為了解決線程/進程阻塞在那個I/O調用中,常用select或者pool

4>epoll

在linux2.6之后有的epoll,實用的方法是:用一個線程專門進行端口的監聽,accept接收到連接的時候,把連接設置成非阻塞方式,把epoll時間設置成邊緣觸發方式,加入epoll管理。接收線程阻塞在epoll的等待事件函數。另外一個線程專門用于數據發送。

注意:

1.如果把epoll設置成水平觸發效率就下降采用select的水平。

2.Unix系統下有單個進程打開的描述符的限制,還有系統內打開的描述符的數目限制。系統內打開的描述符數目限制由軟硬鏈接限制兩個。硬連接是根據機器的配置而不同。軟連接限制可以修改但是必須小于硬限制。

應用:

Linux下大規模的TCP并發。

當前并發還有其它的方式。比如線程池。進程池等,每種模式都有他的優缺點,如果大規模的并發,采用epoll會更好。

epoll的時間設置有邊緣觸發方式和水平觸發方式

1.水平觸發方式:

如果文件描述符已經就緒可以非阻塞的執行IO操作了,此時會觸發通知。允許在任意時候重復檢測IO的狀態,沒有必要每次描述符就緒后盡可能多的執行IO,select,poll就屬于水平觸發事件。

只要滿足要求就觸發一個事件。

2.邊緣觸發方式:

如果文件描述符自上次狀態改變后有新的IO活動到來,此時會觸發通知。在收到一個IO事件通知盡可能多的執行IO操作,因為如果再一次通知中沒有執行完IO那么就需要等到下一次新的IO活動到來才能獲取就緒的描述符。信號驅動式IO就屬于邊緣觸發。

每當狀態改變就觸發一個事件。

eg:現在有一個1000個字節的報文,無論是水平觸發還是邊緣觸發,都會發送一個只讀通知,當收到了100個字節后,水平觸發因為還有字節沒有讀完,就會發送一個只讀通知,但是邊緣觸發會一直保持等待的通知,等待接下來的報文的到來,直到邊緣觸發返回EWOULDBLOCK就摒棄這個socket。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux中并發服務器的實現模式有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荔浦县| 宁陵县| 且末县| 绥滨县| 杭锦旗| 扎赉特旗| 汉阴县| 城口县| 安仁县| 茶陵县| 乌拉特前旗| 宽城| 渑池县| 奇台县| 新昌县| 黎平县| 中西区| 江山市| 莱芜市| 得荣县| 罗甸县| 萨迦县| 西盟| 藁城市| 彩票| 阿克苏市| 印江| 大姚县| 砚山县| 远安县| 长丰县| 新晃| 叙永县| 荣成市| 盖州市| 沙雅县| 大埔县| 榆社县| 神木县| 安国市| 瓮安县|