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

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

(總結(jié))高并發(fā)消息隊(duì)列常用通知機(jī)制

2024-06-28 13:24:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
(總結(jié))高并發(fā)消息隊(duì)列常用通知機(jī)制

最近在研究一個(gè)高性能的無(wú)鎖共享內(nèi)存消息隊(duì)列,使用的fifo來(lái)通知。結(jié)合之前《基于管道通知的百萬(wàn)并發(fā)長(zhǎng)連接server模型》文章,這里總結(jié)一下常用的通知機(jī)制。

常用的通知機(jī)制中比較典型的有以下幾種:

1、signal

這種機(jī)制下,我們向被通知進(jìn)程發(fā)送一個(gè)特殊的signal(比如SIGUSR1),這樣正在睡眠的讀進(jìn)程就會(huì)被信號(hào)中斷,然后醒來(lái)。

該方法的優(yōu)點(diǎn)是:讀進(jìn)程不需要監(jiān)聽(tīng)一個(gè)額外的eventfd,適合一些不方便使用eventfd的場(chǎng)景;另外,用戶可以選擇是使用實(shí)時(shí)信號(hào)(SIGRTMIN+1),還是使用非實(shí)時(shí)信號(hào)(SIGUSR1)。

該方法的缺點(diǎn)是:通知不實(shí)時(shí)。因?yàn)樾盘?hào)的檢查只有在中斷返回的時(shí)候才會(huì)進(jìn)行,這個(gè)時(shí)間跟操作系統(tǒng)的HZ、jiffies有關(guān)。

2、socket

這種機(jī)制下,寫(xiě)進(jìn)程往socket(domain socket)寫(xiě)一個(gè)字符,然后讀進(jìn)程通過(guò)epoll得到數(shù)據(jù)到達(dá)的通知。

3、fifo

這種機(jī)制跟socket類(lèi)似,寫(xiě)進(jìn)程往fifo中寫(xiě)一個(gè)字符,然后讀進(jìn)程通過(guò)epoll得到數(shù)據(jù)到達(dá)的通知。

4、pipe

跟2、3差不多。

5、eventfd/signalfd

跟前面差不多,不過(guò)是內(nèi)核幫我們事先f(wàn)ifo、signal通知,只有比較新的內(nèi)核版本才支持。這種方式存在的問(wèn)題是需要在不同進(jìn)程間傳遞句柄,非fork方式實(shí)現(xiàn)比較復(fù)雜。

上面這幾種方式的共性是都需要陷入內(nèi)核,被通知進(jìn)程只有在內(nèi)核態(tài)才能接收通知,對(duì)于處理性能要求高的場(chǎng)景,應(yīng)該少用通知。所以,當(dāng)然就看業(yè)務(wù)場(chǎng)景發(fā)送通知的開(kāi)銷(xiāo)是不是很大了。如果請(qǐng)求量很大,讀進(jìn)程一直忙于處理,不會(huì)頻繁觸發(fā)通知,那就很合適了。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宿迁市| 八宿县| 广东省| 威信县| 读书| 佛冈县| 龙山县| 平谷区| 岗巴县| 拉孜县| 利辛县| 丹巴县| 新密市| 延川县| 宁安市| 定安县| 楚雄市| 韶关市| 新竹县| 扶余县| 邹平县| 通城县| 新余市| 齐河县| 汪清县| 普定县| 始兴县| 甘谷县| 武宁县| 大冶市| 西乌珠穆沁旗| 称多县| 普陀区| 武城县| 永修县| 永嘉县| 丰台区| 陆良县| 略阳县| 顺平县| 商水县|