多線程(入門)

進程

  • 什么是進程
  1. 進程是指在系統運行正在運行的一個應用程序
  2. 每個進程之間是獨立的,每個進程均運行在其專用且受保護的內存空間內
    比如同時打開QQ,Xcode,系統就會分別啟動兩個進程
  3. 通過"活動監視器"可以查看Mac系統所開啟的進程

線程

  • 什么是線程
    1. 一個進程想要執行任務,必須得有線程(每個1個線程至少要有一個線程)
    2. 線程是進程的基本執行單元,一個進程(程序)的所有任務都在線程執行
      • 比如使用酷狗播放器,使用迅雷下載電影都需要在線程總執行

線程的串行

  • 1個線程中的任務的執行時串行的
  • 如果要在一個線程中執行多個任務,那么只能一個一個地按順序執行這些任務
    也就是說,在同一個時間內,一個線程只能執行一個任務
    • 也就是說同一個時間內,一個線程只能執行一個任務

多線程

  • 什么是多線程
    • 1個線程中可以開啟多條線程,每個線程可以并行(同時)執行不同的任務
    • 進程 ->車間,線程 ->車間工人
    • 多線程技術可以提高程序的執行效率

多線程的原理

  • 多線程的原理
    • 同一個時間內,CPU只能處理1條線程,也只有1條線程在工作(執行)
    • 多線程并發(同時)執行,其實就是CPU快速地在多條線程之間調度(切換)
    • 如果CPU調度線程的時間足夠快,就造成類多線程并發執行的假象
    • 如果線程非常非常多,就會發生
      • CPU會在N多線程之間切換,CPU就會累死,消耗大量的CPU資源
      • 每條線程被調度執行的頻率會降低(線程的執行效率降低)

多線程的優缺點

  • 多線程的優點

    • 能適當提高程序的執行效率
    • 能適當的提高CPU的利用率(CPU,內存利用率)
  • 多線程的缺點

    • 開啟線程需要占用一定的內存空間(默認情況下,主線程占用1M,子線程占用512KB),如果開啟用大量的內存空間,降低程序的性能
    • 線程越多,CPU在調度線程的開銷就越大
    • 程序設計更加復雜:比如線程之間的通信,多線程的數據分享

多線程在iOS開發中的應用

  • 什么是主線程

    • 一個iOS程序運行后,默認會開啟1條線程,稱為"主線程"或"UI線程"
    • 主線程的主要作用
    • 顯示/刷新UI界面
    • 處理UI事件(比如點擊事件/滾動事件/拖拽事件等)
  • 主線程使用注意

    • 別將耗時的操作放在主線程中
- 耗時操作會卡主線程,嚴重影響UI的流暢度,給用戶一種"卡"的壞體驗

iOS中多線程的實現方案

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Object C中創建線程的方法是什么?如果在主線程中執行代碼,方法是什么?如果想延時執行代碼、方法又是什么? 1...
    AlanGe閱讀 1,793評論 0 17
  • 又來到了一個老生常談的問題,應用層軟件開發的程序員要不要了解和深入學習操作系統呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,172評論 0 23
  • 一、iOS多線程 iOS多線程開發有三種方式:NSThread、NSOperation、GCD iOS在每個進程啟...
    無灃閱讀 206評論 0 1
  • 一直懶得寫Python相關的文章,恰好有天需要簡單的給童鞋們講點課,倉促之余就誕生了此文. 今天本來準備全面的聊聊...
    涅槃1992閱讀 1,745評論 0 8
  • 月考結束后,和以一位大神級學霸交流了一會。在談到成績方面,我總是在找一個行的通的方式開溜,讓他誤以為我不在屏幕旁。...
    我與隨性棲居閱讀 246評論 4 2