多線(xiàn)程基礎(chǔ)

多線(xiàn)程基礎(chǔ)

進(jìn)程

  • 什么是進(jìn)程

  • 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序

  • 每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專(zhuān)用且受保護(hù)的內(nèi)存空間內(nèi)

  • 比如同時(shí)打開(kāi)迅雷蝇完、Xcode,系統(tǒng)就會(huì)分別啟動(dòng)2個(gè)進(jìn)程

  • 通過(guò)“活動(dòng)監(jiān)視器”可以查看Mac系統(tǒng)中所開(kāi)啟的進(jìn)程

線(xiàn)程

  • 什么是線(xiàn)程
  • 1個(gè)進(jìn)程要想執(zhí)行任務(wù),必須得有線(xiàn)程(每1個(gè)進(jìn)程至少要有1條線(xiàn)程)
  • 一個(gè)進(jìn)程(程序)的所有任務(wù)都在線(xiàn)程中執(zhí)行
  • 比如使用酷狗播放音樂(lè)绷旗、使用迅雷下載電影肘习,都需要在線(xiàn)程中執(zhí)行

線(xiàn)程的串行

  • 1個(gè)線(xiàn)程中任務(wù)的執(zhí)行是串行的
  • 如果要在1個(gè)線(xiàn)程中執(zhí)行多個(gè)任務(wù)际乘,那么只能一個(gè)一個(gè)地按順序執(zhí)行這些任務(wù)
  • 也就是說(shuō),在同一時(shí)間內(nèi)漂佩,1個(gè)線(xiàn)程只能執(zhí)行1個(gè)任務(wù)
  • 比如在1個(gè)線(xiàn)程中下載3個(gè)文件(分別是文件A脖含、文件B、文件C)

多線(xiàn)程

  • 什么是多線(xiàn)程

  • 1個(gè)進(jìn)程中可以開(kāi)啟多條線(xiàn)程投蝉,每條線(xiàn)程可以并行(同時(shí))執(zhí)行不同的任務(wù)

  • 進(jìn)程 -> 車(chē)間养葵,線(xiàn)程 -> 車(chē)間工人

  • 多線(xiàn)程技術(shù)可以提高程序的執(zhí)行效率

  • 比如同時(shí)開(kāi)啟3條線(xiàn)程分別下載3個(gè)文件(分別是文件A、文件B瘩缆、文件C)

多線(xiàn)程的原理

  • 多線(xiàn)程的原理
  • 同一時(shí)間关拒,CPU只能處理1條線(xiàn)程,只有1條線(xiàn)程在工作(執(zhí)行)
  • 多線(xiàn)程并發(fā)(同時(shí))執(zhí)行,其實(shí)是CPU快速地在多條線(xiàn)程之間調(diào)度(切換)
  • 如果CPU調(diào)度線(xiàn)程的時(shí)間足夠快着绊,就造成了多線(xiàn)程并發(fā)執(zhí)行的假象
  • 思考:如果線(xiàn)程非常非常多谐算,會(huì)發(fā)生什么情況?
    • CPU會(huì)在N多線(xiàn)程之間調(diào)度归露,CPU會(huì)累死洲脂,消耗大量的CPU資源
    • 每條線(xiàn)程被調(diào)度執(zhí)行的頻次會(huì)降低(線(xiàn)程的執(zhí)行效率降低)

多線(xiàn)程的優(yōu)缺點(diǎn)

  • 多線(xiàn)程的優(yōu)點(diǎn)
  • 能適當(dāng)提高程序的執(zhí)行效率
  • 能適當(dāng)提高資源利用率(CPU、內(nèi)存利用率)
  • 多線(xiàn)程的缺點(diǎn)
  • 創(chuàng)建線(xiàn)程是有開(kāi)銷(xiāo)的剧包,iOS下主要成本包括:內(nèi)核數(shù)據(jù)結(jié)構(gòu)(大約1KB)恐锦、棧空間(子線(xiàn)程512KB玄捕、主線(xiàn)程1MB踩蔚,也可以使用-setStackSize:設(shè)置,但必須是4K的倍數(shù)枚粘,而且最小是16K)馅闽,創(chuàng)建線(xiàn)程大約需要90毫秒的創(chuàng)建時(shí)間
  • 如果開(kāi)啟大量的線(xiàn)程,會(huì)降低程序的性能
    線(xiàn)程越多馍迄,CPU在調(diào)度線(xiàn)程上的開(kāi)銷(xiāo)就越大
  • 程序設(shè)計(jì)更加復(fù)雜:比如線(xiàn)程之間的通信福也、多線(xiàn)程的數(shù)據(jù)共享

多線(xiàn)程在iOS開(kāi)發(fā)中的應(yīng)用

  • 什么是主線(xiàn)程
  • 一個(gè)iOS程序運(yùn)行后,默認(rèn)會(huì)開(kāi)啟1條線(xiàn)程攀圈,稱(chēng)為“主線(xiàn)程”或“UI線(xiàn)程”
  • 主線(xiàn)程的主要作用
  • 顯示\刷新UI界面
    處理UI事件(比如點(diǎn)擊事件暴凑、滾動(dòng)事件、拖拽事件等)
  • 主線(xiàn)程的使用注意
  • 別將比較耗時(shí)的操作放到主線(xiàn)程中
  • 耗時(shí)操作會(huì)卡住主線(xiàn)程赘来,嚴(yán)重影響UI的流暢度现喳,給用戶(hù)一種“卡”的壞體驗(yàn)

iOS中多線(xiàn)程的實(shí)現(xiàn)方案

  • pthread c語(yǔ)言 程序員管理 幾乎不使用
  • NSThread OC 程序員管理 偶爾使用
  • GCD C語(yǔ)言 自動(dòng)管理 經(jīng)常使用
  • NSOperation OC 自動(dòng)管理 經(jīng)常使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市犬辰,隨后出現(xiàn)的幾起案子嗦篱,更是在濱河造成了極大的恐慌,老刑警劉巖幌缝,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灸促,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涵卵,警方通過(guò)查閱死者的電腦和手機(jī)浴栽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)轿偎,“玉大人典鸡,你說(shuō)我怎么就攤上這事』祷蓿” “怎么了椿每?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵伊者,是天一觀的道長(zhǎng)英遭。 經(jīng)常有香客問(wèn)我间护,道長(zhǎng),這世上最難降的妖魔是什么挖诸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任汁尺,我火速辦了婚禮,結(jié)果婚禮上多律,老公的妹妹穿的比我還像新娘痴突。我一直安慰自己,他們只是感情好狼荞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布辽装。 她就那樣靜靜地躺著,像睡著了一般相味。 火紅的嫁衣襯著肌膚如雪拾积。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天丰涉,我揣著相機(jī)與錄音拓巧,去河邊找鬼。 笑死一死,一個(gè)胖子當(dāng)著我的面吹牛肛度,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播投慈,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼承耿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伪煤?” 一聲冷哼從身側(cè)響起加袋,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎带族,沒(méi)想到半個(gè)月后锁荔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝙砌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年阳堕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片择克。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恬总,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肚邢,到底是詐尸還是另有隱情壹堰,我是刑警寧澤拭卿,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站贱纠,受9級(jí)特大地震影響峻厚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谆焊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一惠桃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辖试,春花似錦辜王、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至莲兢,卻和暖如春汹来,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怒见。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工俗慈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遣耍。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓闺阱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舵变。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酣溃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 前言 多線(xiàn)程并發(fā)編程是Java編程中重要的一塊內(nèi)容,也是面試重點(diǎn)覆蓋區(qū)域纪隙,所以學(xué)好多線(xiàn)程并發(fā)編程對(duì)我們來(lái)說(shuō)極其重要...
    嘟爺MD閱讀 7,315評(píng)論 21 272
  • 進(jìn)程的概念 進(jìn)程是操作系統(tǒng)上的概念赊豌,操作系統(tǒng)是直接驅(qū)動(dòng)、管理計(jì)算機(jī)硬件的一款管理軟件绵咱,它的運(yùn)行幫助我們利用計(jì)算機(jī)硬...
    伶俐ll閱讀 722評(píng)論 0 3
  • 寫(xiě)在前面的話(huà): 這篇博客是我從這里“轉(zhuǎn)載”的碘饼,為什么轉(zhuǎn)載兩個(gè)字加“”呢?因?yàn)檫@絕不是簡(jiǎn)單的復(fù)制粘貼悲伶,我花了五六個(gè)小...
    SmartSean閱讀 4,730評(píng)論 12 45
  • 在今天的中國(guó)艾恼,有兩件事情是絕對(duì)公平的:1、只要去吃飯麸锉,就有可能吃到地溝油和滿(mǎn)是農(nóng)藥的菜钠绍。2、只要走在馬路上花沉,...
    青茵說(shuō)閱讀 485評(píng)論 0 1
  • 我可能不能愛(ài)你柳爽,但我無(wú)法忘記你媳握。如果時(shí)光倒流,我希望不要遇見(jiàn)你磷脯,這樣我們就不會(huì)相愛(ài)蛾找,就不會(huì)有后來(lái)所發(fā)生事情,我就不...
    林墨熙閱讀 190評(píng)論 0 0