GCD

下面這三篇文檔講了GCD使用的很多場景和技巧帆啃,感覺值得一看
https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html#//apple_ref/doc/uid/TP40008091-CH103-SW13
這個文檔講述了Dispatch Sources的使用猪贪。
dispatch source 將你想觀察的事件,dispatch queue和處理事件響應(yīng)的代碼關(guān)聯(lián)在一起,當(dāng)你創(chuàng)建一個dispatch source時命黔,它默認是掛起(suspend)狀態(tài),這讓你有時間完成對他的配置掰伸,當(dāng)你想讓它響應(yīng)事件時想际,你需要resum培漏。
dispatch source會和一個queue關(guān)聯(lián),你可以change queue胡本,但是如果你的事件已經(jīng)加入了queue牌柄,那么該事件就會在之前的queue中執(zhí)行,當(dāng)執(zhí)行完成后侧甫,后續(xù)的事件會在新的queue中去執(zhí)行珊佣。
你可以給dispatch source設(shè)置一個取消事件的響應(yīng)(Cancellation Handler),通常情況下披粟,你不需要這么做咒锻,但是如果你需要做釋放資源的操作守屉,比如關(guān)閉一個文件描述符,那么你需要這樣去操作
dispatch object是需要用戶自己去管理引用計數(shù)的滨巴,如果你想持有或者銷毀它恭取,需要調(diào)用 dispatch_retain and dispatch_release函數(shù)
文檔下半部分舉了timer,socket(Reading data from a file蜈垮、Writing data to a file柠横、Watching for filename changes),Monitoring Signals晨继、Monitoring Signals的例子搬俊,值得一看
https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1
這個文檔講述了Dispatch Queues的使用
我們可以創(chuàng)建同步隊列,并行隊列餐屎,我們可以設(shè)定隊列執(zhí)行的優(yōu)先級腹缩,向隊列添加任務(wù),我們可以設(shè)置在任務(wù)結(jié)束后執(zhí)行某個block藏鹊,我們可以使用dispatch_apply去代替for循環(huán),我們可以對queue進行suspend和resume操作楚殿,我們可以使用信號量對有限的資源進行控制脆粥,我們可以使用group去進行同步操作影涉,dispatch queue本身不需要用戶進行release,retain操作,如果你這樣做了常潮,它會被簡單的忽略喊式,dispatch queue本身是線程安全的,注意gcd的死鎖問題* Do not call the [dispatch_sync] function from a task that is executing on the same queue that you pass to your function call. Doing so will deadlock the queue. If you need to dispatch to the current queue, do so asynchronously using the [dispatch_async] function.當(dāng)你想做順序操作時夏哭,應(yīng)當(dāng)使用同步隊列献联,而不是使用鎖。Avoid taking locks from the tasks you submit to a dispatch queue. Although it is safe to use locks from your tasks, when you acquire the lock, you risk blocking a serial queue entirely if that lock is unavailable. Similarly, for concurrent queues, waiting on a lock might prevent other tasks from executing instead. If you need to synchronize parts of your code, use a serial dispatch queue instead of a lock.值得一看
https://developer.apple.com/library/archive/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ThreadMigration/ThreadMigration.html#//apple_ref/doc/uid/TP40008091-CH105-SW18
這個文檔講了如何從Thread遷移到GCD
其中使用dispatch_apply代替for循環(huán)进胯,使用同步隊列代替runloop胁镐,dispatch_sync正確使用都是不錯的技巧诸衔,值得一看

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笨农,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竭宰,更是在濱河造成了極大的恐慌,老刑警劉巖渣淳,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伴箩,死亡現(xiàn)場離奇詭異嗤谚,居然都是意外死亡怔蚌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門椅野,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟闪,“玉大人杖狼,你說我怎么就攤上這事〉” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵嗽上,是天一觀的道長熄攘。 經(jīng)常有香客問我,道長烹看,這世上最難降的妖魔是什么惯殊? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任也殖,我火速辦了婚禮,結(jié)果婚禮上己儒,老公的妹妹穿的比我還像新娘。我一直安慰自己冲甘,他們只是感情好途样,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布何暇。 她就那樣靜靜地躺著裆站,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羽嫡。 梳的紋絲不亂的頭發(fā)上胳嘲,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天了牛,我揣著相機與錄音鹰祸,去河邊找鬼。 笑死蛙婴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耘擂,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼醉冤,長吁一口氣:“原來是場噩夢啊……” “哼蚁阳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起螺捐,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤归粉,失蹤者是張志新(化名)和其女友劉穎椿疗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡席噩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了馒索。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片名船。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜈块,死狀恐怖百揭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盹舞,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布癣亚,位于F島的核電站,受9級特大地震影響获印,放射性物質(zhì)發(fā)生泄漏述雾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一兼丰、第九天 我趴在偏房一處隱蔽的房頂上張望玻孟。 院中可真熱鬧,春花似錦鳍征、人聲如沸黍翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匣掸。三九已至,卻和暖如春氮双,著一層夾襖步出監(jiān)牢的瞬間碰酝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工戴差, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留送爸,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像爽航,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衷佃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

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

  • 談到iOS多線程惯悠,一般都會談到四種方式:pthread筒严、NSThread、GCD和NSOperation娶视。其中,蘋...
    攻城獅GG閱讀 268評論 0 3
  • 1.NSTimer不準(zhǔn)時的原因:(1).RunLoop循環(huán)處理時間硫兰,每次循環(huán)是固定時間,只有在這段時間才會去查看N...
    稻春閱讀 1,235評論 0 3
  • 轉(zhuǎn)載自:http://www.reibang.com/p/665261814e24 談到iOS多線程,一般都會談到...
    CodingMann丶許半仙閱讀 479評論 0 0
  • 現(xiàn)在iOS的多線程方案主要有以下這幾種: GCD(Grand Central Dispatch):使用dispat...
    寒光冷劍閱讀 1,568評論 0 2
  • 程序中同步和異步是什么意思弛饭?有什么區(qū)別档桃? 解釋一:異步調(diào)用是通過使用單獨的線程執(zhí)行的。原始線程啟動異步調(diào)用嘹屯,異步調(diào)...
    風(fēng)繼續(xù)吹0閱讀 1,028評論 1 2