多線程之GCD與單例模式

1.什么是GCD

? ? ? Grand Central Dispatch (GCD)是Apple開發(fā)的一個多核編程的解決方法晌缘。在iOS4.0開始之后才能使用。GCD是一個替代諸如NSThread, NSOperationQueue, NSInvocationOperation等技術(shù)的很高效和強(qiáng)大的技術(shù)【猎海現(xiàn)在的iOS系統(tǒng)都升級到7了鸡捐,所以不用擔(dān)心該技術(shù)不能使用即碗。

? ? ? 全稱是Grand Center Dispatch(CPU調(diào)度中心,調(diào)度的是任務(wù)和線程闹司,把任務(wù)交給線程執(zhí)行)。純C語言沐飘,提供了非常多游桩、強(qiáng)大的函數(shù)。

2.GCD的關(guān)鍵術(shù)語

串行耐朴、并行:所謂串行并行描述是相對而言的众弓,串行是指在同一時間只執(zhí)行一個任務(wù),并行是指在同一時間可能執(zhí)行多個任務(wù)隔箍。

同步、異步:在GCD中脚乡,同步異步是為了描述一個函數(shù)相對于該函數(shù)要求GCD執(zhí)行完成的另一個任務(wù)蜒滩。同步方法只在它完成它需要做的任務(wù)后才會返回。異步方法剛好和同步方法相反奶稠,它不會等待任務(wù)完成才返回俯艰,它會立即返回。所以異步不會阻塞當(dāng)前線程執(zhí)行另一個任務(wù)(方法\函數(shù))锌订。

死鎖:所謂的死鎖是指它們都卡住了竹握,并等待對方完成或執(zhí)行其它操作。第一個不能完成是因為它在等待第二個的完成辆飘。但第二個也不能完成啦辐,因為它在等待第一個的完成◎谙睿互相等待芹关,導(dǎo)致誰都完不成。

線程安全:線程安全的代碼在多線程或并發(fā)任務(wù)中被安全的調(diào)用紧卒,而不會導(dǎo)致任何問題(數(shù)據(jù)損壞侥衬、崩潰等)。比如說經(jīng)典案例:買票系統(tǒng)跑芳,銀行取錢就是這個意思轴总。

3.隊列和任務(wù)的幾種情況

同步、串行隊列:不開新線程博个,順序執(zhí)行

同步怀樟、串行隊列

同步、并行隊列:不開新線程坡倔,順序執(zhí)行

同步漂佩、并行隊列

異步脖含、串行:新開線程,順序(同步)執(zhí)行投蝉。

異步养葵、串行

異步、并行:新開線程瘩缆,異步執(zhí)行

異步关拒、并行

下面這個表就包含全了,一般的話用異步并行用的比較多庸娱。

? ? 同步異步串行并行表

4.關(guān)于GCD單例模式

單例模式的作用

? ? ? 可以保證在程序運(yùn)行過程着绊,一個類只有一個實例,而且該實例易于供外界訪問,從而方便地控制實例個數(shù)熟尉,并節(jié)約系統(tǒng)資源

單例模式的使用場合

? ? ? ?在整個應(yīng)用程序中归露,共享一份資源(這份資源只需要初始化1次)

附上代碼

?
代碼

dispatch_once不僅意味著代碼僅會被運(yùn)行一次,而且還是線程安全的斤儿,這就意味著你不需要使用諸如@synchronized之類的來防止使用多個線程或者隊列時不同步的問題剧包。還有一種寫法是用@synchronized,其實也是為了線程安全往果。

小結(jié)

好了疆液,先講這么多吧,全是基礎(chǔ)的陕贮,自己多琢磨一下堕油,以后把深層次的東西寫一下分享給大家。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肮之,一起剝皮案震驚了整個濱河市掉缺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌戈擒,老刑警劉巖攀圈,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峦甩,居然都是意外死亡赘来,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門凯傲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犬辰,“玉大人,你說我怎么就攤上這事冰单』戏欤” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵诫欠,是天一觀的道長涵卵。 經(jīng)常有香客問我浴栽,道長,這世上最難降的妖魔是什么轿偎? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任典鸡,我火速辦了婚禮,結(jié)果婚禮上坏晦,老公的妹妹穿的比我還像新娘萝玷。我一直安慰自己,他們只是感情好昆婿,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布球碉。 她就那樣靜靜地躺著,像睡著了一般仓蛆。 火紅的嫁衣襯著肌膚如雪睁冬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天看疙,我揣著相機(jī)與錄音痴突,去河邊找鬼。 笑死狼荞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帮碰。 我是一名探鬼主播相味,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殉挽!你這毒婦竟也來了丰涉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斯碌,失蹤者是張志新(化名)和其女友劉穎一死,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻唾,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡投慈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冠骄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伪煤。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凛辣,靈堂內(nèi)的尸體忽然破棺而出抱既,到底是詐尸還是另有隱情,我是刑警寧澤扁誓,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布防泵,位于F島的核電站蚀之,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捷泞。R本人自食惡果不足惜足删,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肚邢。 院中可真熱鬧壹堰,春花似錦、人聲如沸骡湖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽响蕴。三九已至谆焊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浦夷,已是汗流浹背辖试。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留劈狐,地道東北人罐孝。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像肥缔,于是被迫代替她去往敵國和親莲兢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

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