APP直播源代碼,緩沖是否可以啟動(dòng)兩套方案使用
在APP直播源代碼的服務(wù)器開發(fā)中,通常會(huì)把邏輯處理線程和IO處理線程分開。其中邏輯處理線程是對接收的包進(jìn)行邏輯處理,IO處理線程是網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收,連接的建立和維護(hù),按照一般邏輯,這個(gè)數(shù)據(jù)隊(duì)列是多個(gè)線程在共享,每次訪問都要添加設(shè)備鎖,這無疑戶浪費(fèi)APP直播源代碼的資源和占用開銷,如何減少這個(gè)部分成了重點(diǎn)。
?

一、雙緩沖隊(duì)列
所謂雙緩沖數(shù)據(jù),一個(gè)負(fù)責(zé)從里寫入數(shù)據(jù),一個(gè)負(fù)責(zé)讀取數(shù)據(jù),當(dāng)邏輯線程讀完數(shù)據(jù)后負(fù)責(zé)將自己的隊(duì)列和IP線程的隊(duì)列進(jìn)行交換,這樣需要加鎖的地方,有兩個(gè)從隊(duì)列中寫入數(shù)據(jù)和兩個(gè)隊(duì)列進(jìn)行交換,如果是一塊緩沖區(qū),讀寫操作是不分離的,雙緩沖區(qū)起吧節(jié)省了單緩沖區(qū)時(shí)讀部分的操作互斥和同步開銷。
?

二、緩沖狀態(tài)
1、并發(fā)讀寫,多數(shù)情況下,APP直播源代碼生產(chǎn)者控制著某個(gè)隊(duì)列進(jìn)行寫操作,消費(fèi)者控制著另外一個(gè)隊(duì)列進(jìn)行讀操作,邏輯線程和IO線程進(jìn)行獨(dú)占操作,大大降低互斥/同步的開銷。
2、緩沖區(qū)切換,注意操作的不論是APP直播源代碼的用戶方還是平臺(tái)方,都要在完成對自己隊(duì)列的操作后一定要先釋放鎖資源再去嘗試控制另外的隊(duì)列。因?yàn)槿绻a(chǎn)者操作完成不釋放自己的鎖去嘗試控制另外的鎖,同時(shí)消費(fèi)者也不釋放資源去嘗試控制另外的鎖,那么就會(huì)出現(xiàn)死鎖。
?

三、交換策略原則
優(yōu)先保證APP直播源代碼的讀操作,消費(fèi)者完成對隊(duì)列的操作后,立即進(jìn)行交換。
通過交換線阻塞在生產(chǎn)者的條件變量出,工作線程阻塞在消費(fèi)者條件變量出,生產(chǎn)者隊(duì)列數(shù)據(jù)個(gè)數(shù)大于多少后,立即發(fā)出條件通知,隨機(jī)發(fā)生隊(duì)列交換,交換完畢后,此時(shí)交換線程阻塞在消費(fèi)者的條件變量處,工作線程結(jié)束等待開始處理請求,APP直播源代碼處理完后等待交換線程發(fā)出的條件通知,同時(shí)發(fā)出工作線程結(jié)束工作的條件變量,通知交換線程繼續(xù)工作。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任