iOS 多線程系列 -- 基礎(chǔ)概述

iOS 多線程系列 -- 基礎(chǔ)概述
iOS 多線程系列 -- pthread
iOS 多線程系列 -- NSThread
iOS 多線程系列 -- GCD全解一(基礎(chǔ))
iOS 多線程系列 -- GCD全解二(常用方法)
iOS 多線程系列 -- GCD全解三(進(jìn)階)
iOS 多線程系列 -- NSOperation
測試Demo的GitHub地址

基本概念:

  • 進(jìn)程:
    • 一個(gè)正在運(yùn)行的應(yīng)用程序
  • 線程:
    • 線程有時(shí)被稱為輕權(quán)進(jìn)程(lightweight process),因?yàn)榫€程比進(jìn)程“輕權(quán)”,一般來說,創(chuàng)建一個(gè)線程要比創(chuàng)建一個(gè)進(jìn)程快很多
    • 一個(gè)進(jìn)程想要執(zhí)行任務(wù),必須要有至少一個(gè)線程,APP啟動(dòng)以后,默認(rèn)會(huì)有一個(gè)主線程
  • 線程的串行:
    • 同一個(gè)線程中,任務(wù)的執(zhí)行是串行的,也就是說同一時(shí)間內(nèi)只能執(zhí)行一個(gè)任務(wù),且按順序執(zhí)行任務(wù)
  • 線程的組成部分:
  • Thread ID 線程ID
  • Stack 棧
  • Policy 優(yōu)先級
  • Signal mask 信號碼
  • Errno 錯(cuò)誤碼
  • Thread-Specific Data 特殊數(shù)據(jù)

多線程

  • 多線程的并行:

    • 一個(gè)進(jìn)程中,可以開啟多個(gè)線程,同一時(shí)間內(nèi)可以同時(shí)執(zhí)行多個(gè)線程,這就是多線程的并行
    • 多線程原理:
      • 其實(shí)并不是同時(shí)運(yùn)行,是cpu在這幾個(gè)線程之間快速的切換,當(dāng)切換的速度太快了,看起來像是在同時(shí)運(yùn)行
      • 線程的創(chuàng)建和銷毀以及線程間切換都需要額外的性能開銷,所以線程并不是越多越好,否則可能造成效率下降
  • 多線程的優(yōu)缺點(diǎn)

    • 優(yōu)點(diǎn):
      • 提高cpu等資源使用率,
      • 提高程序的執(zhí)行效率
    • 缺點(diǎn)
      • 每創(chuàng)建一個(gè)線程是會(huì)占用資源的,比如內(nèi)存開銷等
      • 線程太多,會(huì)降低程序的性能
      • 程序開發(fā)復(fù)雜度上升

主線程

主線程

  • 程序運(yùn)行后,默認(rèn)開啟的一條進(jìn)程,叫做主進(jìn)程(UI進(jìn)程)

主線程的用處:

  • 用于刷新UI界面
  • 處理UI事件(用戶點(diǎn)擊,滾動(dòng)等)

主線程使用注意:

  • 注意不要放消耗時(shí)間多的代碼,這種需要較長處理時(shí)間的復(fù)雜任務(wù)代碼要放在子線程
  • 如果主線程執(zhí)行這些比較耗時(shí)的代碼,會(huì)導(dǎo)致UI卡頓

OC中多線程技術(shù)分類:

  • PThread 很少用到,C語言 自己管理線程釋放
  • NSThread 很少用到, oc語言 自己管理線程釋放
  • GCD 常用, C語言 自動(dòng)管理線程釋放
  • NSOperation 常用,GCD的封裝 自動(dòng)管理線程釋放
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時(shí)執(zhí)行代碼、方法又是什么? 1...
    AlanGe閱讀 1,793評論 0 17
  • 多線程 在iOS開發(fā)中為提高程序的運(yùn)行效率會(huì)將比較耗時(shí)的操作放在子線程中執(zhí)行,iOS系統(tǒng)進(jìn)程默認(rèn)啟動(dòng)一個(gè)主線程,用...
    郭豪豪閱讀 2,617評論 0 4
  • GCD簡介 GCD 是 libdispatch 的市場名稱,而 libdispatch 作為 Apple 的一個(gè)庫...
    獨(dú)木舟的木閱讀 1,293評論 0 5
  • 從哪說起呢? 單純講多線程編程真的不知道從哪下嘴。。 不如我直接引用一個(gè)最簡單的問題,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,831評論 1 17
  • 今日實(shí)踐 近期目標(biāo):2月入2萬收入、3月業(yè)績達(dá)標(biāo)、先生在廣州找到如意工作 1今天兩次滴滴打車,上車都深表感謝,他們...
    西紅柿的小姑娘閱讀 249評論 0 0