IOS多線程

1.一些概念

????????進程就是相互隔離的、獨立運行的程序效诅。一個進程就是一個執(zhí)行中的程序布隔,而每個進程都有自己獨立的一塊內(nèi)存空間和一組系統(tǒng)資源。

? ? ? ? 線程是輕量級的進程澎迎,就像進程一樣庐杨,線程在程序中是獨立的、并發(fā)執(zhí)行的夹供,每個線程都有它自己的局部變量灵份。同一個進程中的多個線程之間共享相同的內(nèi)存地址空間,這就意味著它們可以訪問相同的變量和常量哮洽。

? ? ? ? 每個程序都至少有一個線程填渠,這個線程就是主線程。當一個程序啟動時鸟辅,主線程被創(chuàng)建氛什,主線程控制程序的主要流程,負責(zé)顯示和更新UI匪凉,所有的UI元素的更新必須在主線程中進行枪眉。

2.選擇NSTherad、NSOperation還是GCD

? ? ? ? (1)NSTherad是傳統(tǒng)的線程類再层,需要自己管理線程的生命周期贸铜、線程同步、加鎖聂受、睡眠及喚醒等蒿秦。

? ? ? ? (2)NSOperation是面向?qū)ο蟮母呒墑e線程類,不需要自己管理線程蛋济。

? ? ? ? (3)GCD是基于C語句級別的API棍鳖,他提供了C函數(shù)。不需要自己管理線程瘫俊,支持多核CPU處理鹊杖。GCD是蘋果重點推薦的并發(fā)技術(shù)悴灵,唯一的缺陷是它基于C語言的API。

3.GCD

? ? ? ? 在GCD中骂蓖,有一個重要的概念积瞒,那就是派發(fā)隊列(dispatch queue)。派發(fā)隊列是一個對象登下,他可以接受任務(wù)茫孔,并將任務(wù)以先到先執(zhí)行的順序來執(zhí)行。派發(fā)隊列可以是并發(fā)的或串行的被芳。并發(fā)隊列可以執(zhí)行多任務(wù)缰贝,串行隊列同一時間只能執(zhí)行單一任務(wù)。

? ? 三種類型的派發(fā)隊列

? ? ? ? 串行隊列? ? 串行隊列通常用于同步訪問一個特定的資源畔濒,每次只能執(zhí)行一個任務(wù)剩晴。使用函數(shù)dispatch_queue_create,可以創(chuàng)建串行隊列侵状。

? ? ? ? 并發(fā)隊列? ? 也稱為全局派發(fā)隊列赞弥,可以并發(fā)的執(zhí)行一個或多個任務(wù)。當并發(fā)地執(zhí)行多個任務(wù)時趣兄,必然涉及哪些任務(wù)先執(zhí)行绽左,哪些任務(wù)后執(zhí)行的問題。在macOS 10.10 和IOS 8之前艇潭,是通過并發(fā)隊列優(yōu)先級決定的拼窥,而在macOS 10.10和IOS 8之后,則通過QoS(Quality of service)技術(shù)管理蹋凝。使用dispatch_get_global_queue函數(shù)鲁纠,可以創(chuàng)建并發(fā)隊列。

? ? ? ? 主隊列? ? 它在應(yīng)用程序的主線程中仙粱,用于更新UI房交。其他兩個隊列不能更新UI。使用dispatch_get_main_queue函數(shù)伐割,可以獲得主隊列候味。

? ? QoS技術(shù)

? ? ? ? 我們通過 QoS告訴操作系統(tǒng)并發(fā)隊列如何工作,然后操作系統(tǒng)會通過合理的資源控制隔心,從而以最高效的方式執(zhí)行并發(fā)隊列白群。這其中主要涉及CPU調(diào)度、IO操作優(yōu)先級硬霍、任務(wù)執(zhí)行在哪個線程以及執(zhí)行的順序等內(nèi)容帜慢。

? ? ? ? 我們通過一個抽象的Quality of Service參數(shù)來表明任務(wù)的意圖以及類別。

? ? ? ? QsO提供NSQualityOfService(Swift版是QualityOfService)枚舉類型,它有如下5個成員粱玲。

? ? ? ? NSQualityOfServiceUserInteractive? ? 與用戶交互的任務(wù)躬柬,這些任務(wù)通常跟UI刷新有關(guān),例如動畫抽减,它會在一瞬間完成允青。

????????NSQualityOfServiceUserInitiated? ? 由用戶發(fā)起的并且可以立即得到結(jié)果的任務(wù)。例如卵沉,翻動表視圖時加載數(shù)據(jù)颠锉,然后顯示單元格,這些任務(wù)通常跟后續(xù)的用戶交互相關(guān)史汗,會在幾秒或者更短的時間完成琼掠。

????????NSQualityOfServiceUtility? ? 一些耗時的任務(wù),這些任務(wù)不會馬上返回結(jié)果停撞。例如下載任務(wù)瓷蛙,它可能花費幾秒或者幾分鐘的時間。

????????NSQualityOfServiceBackground? ? 這些任務(wù)對用戶不可見怜森,可以長時間在后臺運行速挑。

????????NSQualityOfServiceDefault? ? 優(yōu)先級介于NSQualityOfServiceUserInteractive?和NSQualityOfServiceUtility?之間谤牡。這個值是系統(tǒng)默認的副硅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翅萤,隨后出現(xiàn)的幾起案子恐疲,更是在濱河造成了極大的恐慌,老刑警劉巖套么,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件培己,死亡現(xiàn)場離奇詭異,居然都是意外死亡胚泌,警方通過查閱死者的電腦和手機省咨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玷室,“玉大人零蓉,你說我怎么就攤上這事∏铉停” “怎么了敌蜂?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長津肛。 經(jīng)常有香客問我章喉,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任秸脱,我火速辦了婚禮落包,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摊唇。我一直安慰自己妥色,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布遏片。 她就那樣靜靜地躺著嘹害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吮便。 梳的紋絲不亂的頭發(fā)上笔呀,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音髓需,去河邊找鬼许师。 笑死,一個胖子當著我的面吹牛僚匆,可吹牛的內(nèi)容都是我干的微渠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咧擂,長吁一口氣:“原來是場噩夢啊……” “哼逞盆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起松申,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤云芦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贸桶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舅逸,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年皇筛,在試婚紗的時候發(fā)現(xiàn)自己被綠了琉历。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡水醋,死狀恐怖旗笔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情离例,我是刑警寧澤换团,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站宫蛆,受9級特大地震影響艘包,放射性物質(zhì)發(fā)生泄漏的猛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一想虎、第九天 我趴在偏房一處隱蔽的房頂上張望卦尊。 院中可真熱鬧,春花似錦舌厨、人聲如沸岂却。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏哩。三九已至,卻和暖如春揉燃,著一層夾襖步出監(jiān)牢的瞬間扫尺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工炊汤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留正驻,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓抢腐,卻偏偏與公主長得像姑曙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迈倍,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

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