国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

Linux下幾種并發服務器的實現模式(詳解)

2024-09-05 23:04:30
字體:
來源:轉載
供稿:網友

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下幾種并發服務器的實現模式(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 焦作市| 宁津县| 衡南县| 绍兴市| 灌南县| 稻城县| 保定市| 日照市| 盘山县| 乐平市| 太白县| 顺平县| 扎鲁特旗| 明星| 扎赉特旗| 温宿县| 乌兰县| 监利县| 南溪县| 长乐市| 莫力| 巴马| 贵阳市| 彭水| 昌黎县| 榆树市| 清水河县| 惠东县| 崇州市| 咸阳市| 湖北省| 湘阴县| 定陶县| 依兰县| 旬邑县| 茶陵县| 普兰店市| 淳化县| 隆子县| 大姚县| 松桃|