(1)博客:深入理解GCD
? ? ? ? ? ? ? ? ?理解iOS中的線程池
? ? ? ? ? ? ? ? ?多線程理解
??:(1)信號(hào)量--》以一個(gè)停車場的運(yùn)作為例拧篮。簡單起見凄硼,假設(shè)停車場只有三個(gè)車位荒揣,一開始三個(gè)車位都是空的剧浸。這時(shí)如果同時(shí)來了五輛車良哲,看門人允許其中三輛直接進(jìn)入盛卡,然后放下車攔,剩下的車則必須在入口等待筑凫,此后來的車也都不得不在入口處等待滑沧。這時(shí),有一輛車離開停車場巍实,看門人得知后滓技,打開車攔,放入外面的一輛進(jìn)去蔫浆,如果又離開兩輛殖属,則又可以放入兩輛,如此往復(fù)瓦盛。在這個(gè)停車場系統(tǒng)中洗显,車位是公共資源,每輛車好比一個(gè)線程原环,看門人起的就是信號(hào)量的作用挠唆。里面的3就是信號(hào)量。
wait:當(dāng)一個(gè)線程調(diào)用Wait操作時(shí)嘱吗,它要么得到資源然后將信號(hào)量減一玄组,要么一直等下去(指放入阻塞隊(duì)列)直到信號(hào)量大于等于一時(shí)滔驾。
signal:信號(hào)量上執(zhí)行加操作,對(duì)應(yīng)于車輛離開停車場俄讹,該操作之所以叫做“釋放”是因?yàn)獒尫帕擞尚盘?hào)量守護(hù)的資源哆致。
信號(hào)量資源為1情況,就是互斥鎖患膛。
隊(duì)列(queue):隊(duì)列其實(shí)就是一個(gè)用來提交 block 的對(duì)象摊阀。
任務(wù)(block)
線程(thread)
GCD會(huì)維護(hù)一個(gè)線程池,執(zhí)行這些任務(wù)踪蹬。
所以隊(duì)列不等于線程胞此。