線程 進(jìn)程

線程和進(jìn)程的定義

  • 線程是進(jìn)程的基本執(zhí)行單元,一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行

  • 進(jìn)程要想執(zhí)行任務(wù)逞力,必須得有線程锅论,進(jìn)程至少要有一條線程

  • 程序啟動會默認(rèn)開啟一條線程,這條線程被稱為主線程或 UI 線程

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

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

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

進(jìn)程與線程的關(guān)系

地址空間:同一進(jìn)程的線程共享本進(jìn)程的地址空間叼耙,而進(jìn)程之間則是獨(dú)立的地址空間。 資源擁有:同一進(jìn)程內(nèi)的線程共享本進(jìn)程的資源如內(nèi)存粒没、I/O筛婉、cpu等,但是進(jìn)程之間的 資源是獨(dú)立的癞松。

1: 一個(gè)進(jìn)程崩潰后爽撒,在保護(hù)模式下不會對其他進(jìn)程產(chǎn)生影響入蛆,但是一個(gè)線程崩潰整個(gè)進(jìn) 程都死掉。所以多進(jìn)程要比多線程健壯硕勿。 2: 進(jìn)程切換時(shí)哨毁,消耗的資源大,效率高源武。所以涉及到頻繁的切換時(shí)挑庶,使用線程要好于進(jìn) 程。同樣如果要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作软能,只能用線程不能用進(jìn)程 3: 執(zhí)行過程:每個(gè)獨(dú)立的進(jìn)程有一個(gè)程序運(yùn)行的入口迎捺、順序執(zhí)行序列和程序入口。但是 線程不能獨(dú)立執(zhí)行查排,必須依存在應(yīng)用程序中凳枝,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。

4: 線程是處理器調(diào)度的基本單位跋核,但是進(jìn)程不是岖瑰。 5: 線程沒有地址空間,線程包含在進(jìn)程地址空間中

優(yōu)點(diǎn)

  • 能適當(dāng)提高程序的執(zhí)行效率

  • 能適當(dāng)提高資源的利用率(CPU,內(nèi)存)

  • 線程上的任務(wù)執(zhí)行完成后砂代,線程會自動銷毀

  • 缺點(diǎn)

  • 開啟線程需要占用一定的內(nèi)存空間(默認(rèn)情況下蹋订,每一個(gè)線程都占 512 KB)

  • 如果開啟大量的線程,會占用大量的內(nèi)存空間刻伊,降低程序的性能

  • 線程越多露戒,CPU 在調(diào)用線程上的開銷就越大

  • 程序設(shè)計(jì)更加復(fù)雜,比如線程間的通信捶箱、多線程的數(shù)據(jù)共享

時(shí)間片的概念:CPU在多個(gè)任務(wù)直接進(jìn)行快速的切換智什,這個(gè)時(shí)間間隔就是時(shí)間片

  • (單核CPU)同一時(shí)間,CPU 只能處理 1 個(gè)線程

  • 換言之丁屎,同一時(shí)間只有 1 個(gè)線程在執(zhí)行

  • 多線程同時(shí)執(zhí)行:

  • 是 CPU 快速的在多個(gè)線程之間的切換

  • CPU 調(diào)度線程的時(shí)間足夠快荠锭,就造成了多線程的“同時(shí)”執(zhí)行的效果

  • 如果線程數(shù)非常多

  • CPU 會在 N 個(gè)線程之間切換,消耗大量的 CPU 資源

  • 每個(gè)線程被調(diào)度的次數(shù)會降低晨川,線程的執(zhí)行效率降低

1005.png
1006.png
1007.png

飽和策略

? AbortPolicy 直接拋出RejectedExecutionExeception異常來阻止系統(tǒng)正常運(yùn)行
? CallerRunsPolicy 將任務(wù)回退到調(diào)用者
? DisOldestPolicy 丟掉等待最久的任務(wù)
? DisCardPolicy 直接丟棄任務(wù)

這四種拒絕策略均實(shí)現(xiàn)的RejectedExecutionHandler接口

atomic與nonatomic 的區(qū)別

nonatomic 非原子屬性 atomic 原子屬性(線程安全)证九,針對多線程設(shè)計(jì)的,默認(rèn)值

保證同一時(shí)間只有一個(gè)線程能夠?qū)懭?但是同一個(gè)時(shí)間多個(gè)線程都可以取值) atomic 本身就有一把鎖(自旋鎖) 單寫多讀:單個(gè)線程寫入共虑,多個(gè)線程可以讀取

atomic:線程安全愧怜,需要消耗大量的資源
nonatomic:非線程安全,適合內(nèi)存小的移動設(shè)備

iOS 開發(fā)的建議
所有屬性都聲明為 nonatomic 盡量避免多線程搶奪同一塊資源 盡量將加鎖看蚜、資源搶奪的業(yè)務(wù)邏輯交給服務(wù)器端處理叫搁,減小移動客戶端的壓力

線程和Runloop的關(guān)系

1:runloop與線程是一一對應(yīng)的,一個(gè)runloop對應(yīng)一個(gè)核心的線程,為什么說是核心 的渴逻,是因?yàn)閞unloop是可以嵌套的疾党,但是核心的只能有一個(gè),他們的關(guān)系保存在一個(gè)全局 的字典里惨奕。
2:runloop是來管理線程的雪位,當(dāng)線程的runloop被開啟后,線程會在執(zhí)行完任務(wù)后進(jìn)入休 眠狀態(tài)梨撞,有了任務(wù)就會被喚醒去執(zhí)行任務(wù)雹洗。
3:runloop在第一次獲取時(shí)被創(chuàng)建,在線程結(jié)束時(shí)被銷毀卧波。
4:對于主線程來說时肿,runloop在程序一啟動就默認(rèn)創(chuàng)建好了。
5:對于子線程來說港粱,runloop是懶加載的螃成,只有當(dāng)我們使用的時(shí)候才會創(chuàng)建,所以在子線 程用定時(shí)器要注意:確保子線程的runloop被創(chuàng)建查坪,不然定時(shí)器不會回調(diào)寸宏。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市偿曙,隨后出現(xiàn)的幾起案子氮凝,更是在濱河造成了極大的恐慌,老刑警劉巖望忆,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩阵,死亡現(xiàn)場離奇詭異,居然都是意外死亡炭臭,警方通過查閱死者的電腦和手機(jī)永脓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞋仍,“玉大人,你說我怎么就攤上這事搅吁⊥矗” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵谎懦,是天一觀的道長肚豺。 經(jīng)常有香客問我,道長界拦,這世上最難降的妖魔是什么吸申? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上截碴,老公的妹妹穿的比我還像新娘梳侨。我一直安慰自己,他們只是感情好日丹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布走哺。 她就那樣靜靜地躺著,像睡著了一般哲虾。 火紅的嫁衣襯著肌膚如雪丙躏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天束凑,我揣著相機(jī)與錄音晒旅,去河邊找鬼。 笑死汪诉,一個(gè)胖子當(dāng)著我的面吹牛敢朱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摩瞎,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼拴签,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了旗们?” 一聲冷哼從身側(cè)響起蚓哩,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎上渴,沒想到半個(gè)月后岸梨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稠氮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年曹阔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隔披。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赃份,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奢米,到底是詐尸還是另有隱情抓韩,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布鬓长,位于F島的核電站谒拴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涉波。R本人自食惡果不足惜英上,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一炭序、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苍日,春花似錦惭聂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至豆茫,卻和暖如春侨歉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揩魂。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工幽邓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人火脉。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓牵舵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倦挂。 傳聞我的和親對象是個(gè)殘疾皇子畸颅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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

  • [TOC] 一、 線程和進(jìn)程 1.1 線程的定義 線程是進(jìn)程的基本執(zhí)行單元方援,一個(gè)進(jìn)程的所有任務(wù)倒在線程中執(zhí)行 進(jìn)程...
    修_遠(yuǎn)閱讀 455評論 0 4
  • 線程犯戏、進(jìn)程 1.iOS中的多線程操作送火、多線程方式? 2.多線程的優(yōu)點(diǎn)和缺點(diǎn)分別是什么先匪? 答:優(yōu)點(diǎn):1种吸、將耗時(shí)較長的...
    丶逐漸閱讀 1,372評論 0 8
  • 1:線程定義 線程是進(jìn)程的基本執(zhí)行單元吕喘,一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行 進(jìn)程要想執(zhí)行任務(wù)吃型,必須得有線程,進(jìn)程至少...
    heart_領(lǐng)閱讀 28,627評論 0 10
  • 前言 線程和進(jìn)程在我們開發(fā)中尸昧,跟我們一直形影不離姜钳,那么什么是進(jìn)程坦冠,什么是線程,它們又有什么關(guān)系哥桥,這篇文章將為您簡單...
    似水流年_9ebe閱讀 528評論 1 2
  • 線程和進(jìn)程的區(qū)別 線程: 1,線程是進(jìn)程的基本單位激涤,一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行拟糕。 2判呕,進(jìn)程要想執(zhí)行任務(wù),必須...
    Bel李玉閱讀 1,204評論 0 1