多線程

進(jìn)程

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

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


  • 比如同時(shí)打開QQ、Xcode,系統(tǒng)就分別啟動2個(gè)進(jìn)程。

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

線程

什么是線程
  • 1個(gè)進(jìn)程想要執(zhí)行任務(wù),就必須得有線程。(一個(gè)進(jìn)程至少有一條線程)
  • 線程是進(jìn)程的基本執(zhí)行單元,一個(gè)進(jìn)程的所有任務(wù)都是在線程中執(zhí)行的。
  • 比如使用酷狗播放音樂、使用迅雷下載電影,都需要在線程中執(zhí)行。


線程的串行
  • 1個(gè)線程中的任務(wù)是串行執(zhí)行的。
  • 如果在一個(gè)線程中執(zhí)行多個(gè)任務(wù),那么只能按順序一個(gè)一個(gè)的執(zhí)行。
  • 比如在一個(gè)線程中下載3個(gè)文件。(分別為文件A、文件B、文件C)


    屏幕快照 2017-06-26 上午9.39.40.png

多線程

什么是多線程?
  • 1個(gè)進(jìn)程中可以開啟多條線程,每個(gè)線程并行(同時(shí))的執(zhí)行不同的任務(wù)。
  • 進(jìn)程---->車間,線程--->車間工人。
  • 多線程可以提高技術(shù)可以提高程序的執(zhí)行效率。
  • 比如開辟3條線程分別下載3個(gè)文件(文件A,文件B,文件C)。


    屏幕快照 2017-06-26 上午9.45.51.png

多線程原理

多線程原理
  • 同一時(shí)間,CPU只能處理一條線程,只有一條線程在工作。
  • 多線程的并發(fā)執(zhí)行,其實(shí)是CPU快速在多條線程之間切換(調(diào)度)。
  • 如果CPU調(diào)度線程時(shí)間足夠快,就會造成多線程并發(fā)執(zhí)行的假象。
  • 思考,如果線程足夠多,會發(fā)生什么?
  • CPU會在N多線程間調(diào)度,CPU會累死,消耗大量的CPU資源。
  • 每條線程被調(diào)度執(zhí)行的頻率會降低(線程的執(zhí)行效率降低)。
  • 以下為3條,然后100條呢?


    屏幕快照 2017-06-26 上午9.53.59.png

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

多線程的優(yōu)點(diǎn)
  • 適當(dāng)提高程序的執(zhí)行效率。
  • 能適當(dāng)提高資源利用率。
多線程的缺點(diǎn)
  • 開辟線程需要占用一定的內(nèi)存空間(默認(rèn)情況,主線程占1M,子線程占用512KB),如果開辟大量線程,會占用大量的內(nèi)存空間,降低程序的性能。
  • 線程越多,CPU在調(diào)度線程上的開銷越大。
  • 程序設(shè)計(jì)更復(fù)雜,比如線程之間的通信、多線程數(shù)據(jù)共享。

多線程在ios開發(fā)中的應(yīng)用

什么是主線程?
  • 一個(gè)iOS程序運(yùn)行后,會默認(rèn)開啟1條線程,稱為主線程或者UI線程。
主線程的主要作用
  • 顯示、刷新UI界面
  • 處理UI事件(比如點(diǎn)擊事件,滾動事件,拖拽事件)
主線程的使用注意
  • 別將耗時(shí)的操作放到主線程中,耗時(shí)操作會卡住主線程,嚴(yán)重影響UI流程度,給用戶一種卡的壞體驗(yàn)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時(shí)執(zhí)行代碼、方法又是什么? 1...
    AlanGe閱讀 1,792評論 0 17
  • 又來到了一個(gè)老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始,來談?wù)劜?..
    tangsl閱讀 4,165評論 0 23
  • 進(jìn)程 1:進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,進(jìn)程是程序在計(jì)算機(jī)上的一次執(zhí)行活動。 2:每個(gè)進(jìn)程之間是相互獨(dú)立...
    沒有夢想_何必遠(yuǎn)方閱讀 881評論 0 3
  • 線程概述 有些程序是一條直線,起點(diǎn)到終點(diǎn);有些程序是一個(gè)圓,不斷循環(huán),直到將它切斷一個(gè)運(yùn)行著的程序就是一個(gè)進(jìn)程或者...
    褪而未變閱讀 309評論 0 0
  • 進(jìn)程的概念 進(jìn)程是操作系統(tǒng)上的概念,操作系統(tǒng)是直接驅(qū)動、管理計(jì)算機(jī)硬件的一款管理軟件,它的運(yùn)行幫助我們利用計(jì)算機(jī)硬...
    伶俐ll閱讀 745評論 0 3