日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt多线程服务器_常见网络服务器并发模型

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt多线程服务器_常见网络服务器并发模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊藍字 關注我們

近些年,隨著互聯網的大發展,高并發服務器技術也快速進步,從簡單的循環服務器模型處理少量網絡并發請求,演進到解決C10K,C10M問題的高并發服務器模型。本文主要以TCP為例,總結了幾種常見的網絡服務器模型的實現方式,優缺點,以及應用實例。

單線程循環

單線程循環

優點:

簡單、易于實現

沒有同步、加鎖這些麻煩事,也沒有這些開銷

缺點:

1、阻塞模型,網絡請求串行處理

2、沒有利用多核cpu的優勢,網絡請求串行處理

總之,沒有充分利用CPU資源。

適用場景:「測試、演示」

典型應用:thrift TSimpleServer

多線程/多進程

多線程/多進程

解析:

主要特點是每個網絡請求由一個進程/線程處理,線程內部使用阻塞式系統調用,在實際場景中使用預先分配的進程池/線程池,以減少頻繁創建銷毀線程的開銷,往往可以得到更好的性能。

在線程的職能劃分上,可以由一個單獨的線程處理accept連接,其余線程處理具體的網絡請求(收包,處理,發包);還可以多個進程單獨listen、accept網絡連接(在linux2.6內核之前會產生驚群,多個進程被喚醒accept建立連接)

優點:

1、實現相對簡單

2、利用到CPU多核資源

缺點:

線程內部還是阻塞的,舉個極端的例子,如果一個線程在handle的業務邏輯中sleep了,這個線程也就掛住了。

單線程IO復用

單線程IO復用

解析:linux高并發服務器中常用epoll作為IO復用機制,select和poll等其他機制不展開討論,區別和特點可以自行搜索。線程將需要處理的socket讀寫事件都注冊到epoll中,當有網絡IO發生時,epoll_wait返回,線程檢查并處理到來socket上的請求。

優點:

實現簡單

減少鎖開銷

減少線程切換開銷

缺點:只能使用單核cpu,handle時間過長會導致整個服務掛死。

適用場景:高IO、低計算,handle處理時間短

典型應用:「redis」

多線程/多進程IO復用

多線程/多進程IO復用

解析:每個子進程都監聽服務,并且都使用epoll機制來處理進程的網絡請求,子進程 accept() 后將創建已連接描述符,然后通過已連接描述符來與客戶端通信。

優點:支撐較高并發

缺點:異步編程不直觀、容易出錯

適用場景:支撐高并發

典型應用:「Nginx」

多線程劃分IO角色

多線程劃分IO角色

解析:

一個accept thread處理新連接建立

一個IO thread pool處理網絡IO

一個handle thread pool處理業務邏輯

優點:

按不同功能劃分線程,各線程處理固定功能,效率更高

可以根據業務特點配置線程數量來性能調優

缺點:

1、線程間通信需要引入鎖開銷

2、邏輯較復雜,實現難度大

電銷應用: thrift TThreadedSelectorServer

AIO

AIO

linux AIO機制尚不成熟,沒有廣泛應用,不展開,感興趣同學可以參考:

http://man7.org/linux/man-pages/man7/aio.7.html

協程

協程

解析:就是在應用層用戶態模擬線程,在用戶態管理協程的調度與切換。

優點:

1、減少上下文切換開銷

2、編程友好,同步的方式寫出異步代碼

缺點:多個協程運行在一個線程上,一個協程阻塞將導致整個線程阻塞

參考:

https://morsmachine.dk/go-scheduler

小結:上面介紹了常見的網絡服務器模型,現實中可能存在其他的組合和變形,重要的是理解每種場景中所面臨的問題和每種模型的特點,設計出符合應用場景的方案才是好方案。

-- End --


推薦好文??點擊藍色字體即可跳轉?【收藏】大作業學生信息管理系統也太好看了叭?【收藏】軟件安裝管家?【典藏】看了這十道C語言題,你敢說你精通C語言??【嘮嗑】為什么大公司不開發Linux桌面應用??【干貨】200行到1000行適合編程進階的項目?【干貨】Qt簡易聊天室設計?【干貨】Qt Live2D桌面動態壁紙

公眾號ID:LearnBase

作者:夢凡


夢想在,終不凡~

喜歡本篇內容請給我們點個在看

總結

以上是生活随笔為你收集整理的qt多线程服务器_常见网络服务器并发模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。