GCD--補(bǔ)充

最近總是忙著忙那,好久沒動過筆了,

dispatch_semaphore_create,dispatch_semaphore_wait,dispatch_semaphore_signal在多線程中控制多線程的并發(fā)數(shù)目,也可以達(dá)到線程鎖的功效,先大致的說下他們每個的作用.

? ? dispatch_semaphore_create(long value):代表信號總量(信號就是你想每次執(zhí)行幾個任務(wù))

? ? dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout):等待信號,可以設(shè)置超時參數(shù).如果信號量>0,那么會繼續(xù)執(zhí)行,并且總的信號量-1;如果信號量=0,則會阻塞當(dāng)前的線程

? ? dispatch_semaphore_signal(dispatch_semaphore_t dsema):通知信號,如果等待線程被喚醒則返回非0,否則返回0.并且會讓信號總量+1.

下面說說用法

一.比如我現(xiàn)在想執(zhí)行10個任務(wù),休息兩秒后呢,繼續(xù)執(zhí)行10各任務(wù),再休息兩秒,在執(zhí)行...可以這么做(如圖1.1):

1.1

簡單解釋下上面圖片中代碼的意思:創(chuàng)建了一個初使值為3的semaphore,每一次for循環(huán)都會創(chuàng)建一個新的線程,線程結(jié)束的時候會發(fā)送一個信號,線程創(chuàng)建之前會信號等待,所以當(dāng)同時創(chuàng)建了10個線程之后,for循環(huán)就會阻塞,等待有線程結(jié)束之后會增加一個信號才繼續(xù)執(zhí)行,如此就形成了對并發(fā)的控制,如上就是一個并發(fā)數(shù)為3的一個線程隊列.

二:生產(chǎn)者---消費(fèi)者模式

如圖2.2

2.2

簡單說下上面代碼:創(chuàng)建了兩個并發(fā)隊列,semaphore初始值設(shè)為1,兩個隊列的執(zhí)行情況:1.生產(chǎn)隊列執(zhí)行到if時候,信號總量變?yōu)?,并生產(chǎn)了第一個蛋糕,并睡兩秒,2.消費(fèi)者隊列執(zhí)行到等待信號的時候,信號總量0,阻塞當(dāng)前線程,一直等到消費(fèi)者隊列執(zhí)行完通知信號是,信號總量變?yōu)?,繼續(xù)執(zhí)行,拿到了蛋糕,信號總量再次變?yōu)?.

三:應(yīng)用簡單示例:同步下載9張圖片,下載完一張顯示一張(線程鎖的功能)

代碼下面會附上demo,簡單說下實(shí)現(xiàn):首先把信號總量設(shè)為1,并創(chuàng)建了9個線程,每個線程負(fù)責(zé)現(xiàn)在一張圖片,下載圖片的時候開啟等待信號,下載完成后更新界面,并發(fā)送通知信號

最后附上demo?


參考鏈接:http://www.iosxxx.com/blog/2016-06-02-GCD%E9%82%A3%E4%BA%9B%E4%BA%8B.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、多線程簡介: 所謂多線程是指一個 進(jìn)程 -- process(可以理解為系統(tǒng)中正在運(yùn)行的一個應(yīng)用程序)中可以開...
    尋形覓影閱讀 1,092評論 0 6
  • GCD筆記 總結(jié)一下多線程部分,最強(qiáng)大的無疑是GCD,那么先從這一塊部分講起. Dispatch Queue的種類...
    jins_1990閱讀 789評論 0 1
  • 2013-1-24 天晴,無雨,收拾完東西的葉晴拉開宿舍的窗簾,陽光赤裸裸地灑下一片,像是久居暗室的囚犯,葉晴習(xí)慣...
    沐少安閱讀 356評論 0 2
  • 嗨,早,各位朋友。又是美好的一天。今天我想給大家聊聊如何讓PPT具有立體美感。之前我們說了如何讓PPT具有美感的方...
    職場思考派阿來閱讀 1,886評論 0 10
  • 忙碌了一上午微信發(fā)來他的信息,他說 我想,我們還是做回朋友吧。對不起,目前的我沒有心思去開始一段感情,這樣的狀態(tài)一...
    寧一子閱讀 156評論 0 0