手機直播原始碼,系統鎖和系統訊號量之間有什麼必要聯絡

首頁 > 科技

手機直播原始碼,系統鎖和系統訊號量之間有什麼必要聯絡

來源:日劇盤點 釋出時間:2023-07-06 15:31

手機直播原始碼的應用中,互斥鎖是平臺運營的樞紐一環,多個執行緒共享資源時,需要確保每個執行緒看到一致的資料檢視,否則可能會產生不可預知的結果,常見的互斥機制可以按照型別分兩種,非睡眠鎖和睡眠鎖。

一、鎖型別

1、睡眠鎖,當thread獲取不到鎖時,thread會進入睡眠狀態,觸發排程程式,切換到其他thread中,直到手機直播原始碼的鎖可用時,重新觸發排程程式,也就是鎖變的可用時,thread1成功獲取到鎖時,至少要經由兩次的上下文切換,而這是非常佔用CPU資源的。

2、非睡眠鎖,當thread獲取不到鎖時,thread會進入自旋狀態,直到直到鎖變的可用,這期間,CPU都是一直空轉的。

二、死鎖問題

互斥機制在應用中,避免不了死鎖問題,死鎖問題產生的原因有許多。

1、同一個執行緒試圖對已經加鎖的資源進行二次加鎖

2、手機直播原始碼的一個執行緒在退出時沒有開釋鎖,另一個執行緒在對該所進行加鎖時泛起故障

3、兩個執行緒A和B,A對資源1進行加鎖,B對資源2進行加鎖,此時A再想對資源2 加鎖時就會被壅塞,B相對資源1加鎖時也會被壅塞,這樣執行緒A永遠獲取不到其他資源的鎖

三、避免死鎖

1、手機直播原始碼的一個執行緒中,避免對已經加鎖的資源再次加鎖

2、線上程退出時,一定要開釋自身持有的鎖

3、多個執行緒和多個鎖時,必需保持各個執行緒加鎖的順序保持一致

四、碰到間斷的鎖怎麼處理

間斷中無法使用睡眠鎖,使用非睡眠鎖也有限制,在手機直播原始碼間斷處理程式中,自旋鎖使用前一定要禁止本地間斷,然後再去獲取指定的鎖。

可以用的解決方案:

1、手機直播原始碼間斷處理程式已經持有的鎖,並在操縱共享資源

2、來了新的更高優先順序的執行緒,此間斷打斷了前一個間斷,並申請鎖

3、因為第一個間斷已經持有了鎖,且未開釋,因此第二個間斷是無法申請到鎖的,只能自旋

4、因為間斷服務程式未完成之前,手機直播原始碼不會再進行排程,所以第二個間斷只能一直自旋

宣告:以上內容為雲豹科技作者本人原創,未經作者本人同意,禁止轉載,否則將追究相關法律責任

手機直播原始碼的應用中,互斥鎖是平臺運營的樞紐一環,多個執行緒共享資源時,需要確保每個執行緒看到一致的資料檢視,否則可能會產生不可預知的結果,常見的互斥機制可以按照型別分兩種,非睡眠鎖和睡眠鎖。

一、鎖型別

1、睡眠鎖,當thread獲取不到鎖時,thread會進入睡眠狀態,觸發排程程式,切換到其他thread中,直到手機直播原始碼的鎖可用時,重新觸發排程程式,也就是鎖變的可用時,thread1成功獲取到鎖時,至少要經由兩次的上下文切換,而這是非常佔用CPU資源的。

2、非睡眠鎖,當thread獲取不到鎖時,thread會進入自旋狀態,直到直到鎖變的可用,這期間,CPU都是一直空轉的。

手機直播原始碼的應用中,互斥鎖是平臺運營的樞紐一環,多個執行緒共享資源時,需要確保每個執行緒看到一致的資料檢視,否則可能會產生不可預知的結果,常見的互斥機制可以按照型別分兩種,非睡眠鎖和睡眠鎖。

一、鎖型別

1、睡眠鎖,當thread獲取不到鎖時,thread會進入睡眠狀態,觸發排程程式,切換到其他thread中,直到手機直播原始碼的鎖可用時,重新觸發排程程式,也就是鎖變的可用時,thread1成功獲取到鎖時,至少要經由兩次的上下文切換,而這是非常佔用CPU資源的。

2、非睡眠鎖,當thread獲取不到鎖時,thread會進入自旋狀態,直到直到鎖變的可用,這期間,CPU都是一直空轉的。

上一篇:最新!直覺外... 下一篇:323AI導航發...
猜你喜歡
熱門閱讀
同類推薦