【iOS】dispatch_semaphore(信號量)

需求:

假設(shè)現(xiàn)在系統(tǒng)有兩個空閑資源可以被利用,但同一時間卻有三個線程要進行訪問,這種情況下該如何處理呢?
或者
我們要下載很多圖片,并發(fā)異步進行,每個下載都會開辟一個新的線程,可是我們又擔(dān)心太多線程肯定cpu吃不消,那么我們這里改怎么處理呢?

使用信號量可以滿足于上面所敘述的需求,使用信號量控制最大開辟線程數(shù)。

定義:
1.信號量:就是一種可用來控制訪問資源的數(shù)量的標(biāo)示,設(shè)定了一個信號量,在線程訪問之前加上信號量的處理,則可告知系統(tǒng)按照我們指定的信號量數(shù)量來執(zhí)行多個線程。

其實,這有些類似鎖機制了,只不過信號量都是系統(tǒng)幫助我們處理,我們只需要之執(zhí)行線程之前,設(shè)定一個信號量值,并在使用時,加上信號量處理方法就行。

2.信號量主要有3個函數(shù),分別是:

//創(chuàng)建信號量,參數(shù):信號的初值,如果小于0則會返回NULL
dispatch_semaphore_create (信號量值)

//等待 降低信號量
dispatch_semaphore_wait (信號量,等待時間)

//提高信號量
dispatch_semaphore_signal (信號量)

注意,正常的使用順序是先降低然后在提高,這兩個函數(shù)通常成隊使用。

使用 【iOS】異步并發(fā)多任務(wù) 任務(wù)執(zhí)行結(jié)束統(tǒng)一處理 (控制并發(fā)量)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容