將同乙個listening socket加入多個epoll能否降低響應時間?

時間 2021-05-30 00:23:46

1樓:kanmars

既然你真心誠意的問了,那我就大發慈悲的告訴你。

a)、相關知識可以檢視書籍《UNIX環境高階程式設計》中的重點章節。

b)、第一種方案,單epoll+執行緒池,是最流行的方案。這是一種叫做reactor的模型

c)、第二種方案,執行緒池+epoll,即先用乙個執行緒accept到socket,然後分發出去,這是很久很久之前的非同步處理模型select

而樓主提的疑問:

1、需要鎖。是的,需要鎖。但是樓主看一下unix環境程式設計,會發現鎖mutex的開銷,還是比較小,可接受的,並無不妥。

鎖管理執行緒排程......這個是不存在的,一般用乙個先進先出佇列解決的麼(乙個簡單的原子性佇列)沒那麼複雜

2樓:歐文韜

肯定自己處理比較好啊。至少可控,你可以根據負載和業務之類自己分發。自己做流控等等。

映像中交給作業系統的話,他只能隨機給你個空閒的。你沒法控制。

3樓:陳碩

你問「如果將同乙個listening socket加入多個epoll, 是不是一種合理的設計?」

我的回答是「不合理」,正確的做法是用 SO_REUSEPORT,如果 Linux 核心足夠新的話。每個 EvenrLoop 有自己的 listening socket,這些 listening socket 偵聽同乙個 port。muduo 的 TcpServer 直接支援這種用法:

陳碩:Linux 4.5/4.6 中對 SO_REUSEPORT 的改進

考研室友和你考同乙個大學同乙個專業?

落辰 如果ta比你優秀 比你更加上進,你不妨主動提出與ta一起努力,有困難互相照應一下,多交流一下學習期間的經驗。如果ta意志不堅定 做事拖沓 沒什麼理想,那你選擇乙個人奮鬥會更好,回到寢室盡量不要再學習,也不要聽ta或者其他室友說些沒用的話,保證自己良好的心態。當然有時候和室友簡單聊聊,可以緩解壓...

同乙個物種不同品種間同乙個基因的鹼基序列完全相同嗎?相似度會達到多少?

鐘文 分子生物學實驗想拿到乙個蛋白,常用的基因序列不外乎human,rat,mouse,monkey等模式生物的cDNA文庫,在此之前你得去multi alignment各個物種的序列,構建進化樹來確定這個基因的conserve程度。同乙個物種不同品種,比如說同乙個物種的monkey,不同品種比如說...

怎麼看待瓜遊將同乙個活動在短時間內復刻多次?

喜歡海軍的鐵頭菇 斯佩小天使這麼可愛,但是是所有小活動中堪稱是最肝的活動了,我看我們服裡面斯佩的愛心才705 我都心疼 喜歡斯佩主要還是喜歡人設,加上這是自己相當肝才撈出來的船,自然不反對復刻,反正我的斯佩已經114級了 不過如果斯佩復刻五次能不能出個改造?還有渕上舞配音的船,萌新不想練也應該都想要...