多線程的概念

一、進程

  • 進程是指在系統(tǒng)中正在運行的一個應(yīng)用程序
  • 每個進程之間是獨立的,每個進程均運行在其專用且受保護的內(nèi)存空間內(nèi)

二、線程

  1. 基本概念
  • 1個進程要想執(zhí)行任務(wù),必須得有線程(每1個進程至少要有1條線程)
  • 線程是進程的基本執(zhí)行單元,一個進程(程序)的所有任務(wù)都在線程中執(zhí)行
  1. 線程的串行
  • 1個線程中任務(wù)的執(zhí)行是串行的
  • 如果要在1個線程中執(zhí)行多個任務(wù),那么只能一個一個地按順序執(zhí)行這些任務(wù)
  • 也就是說,在同一時間內(nèi),1個線程只能執(zhí)行1個任務(wù)

三、多線程

  1. 基本概念
  • 即1個進程中可以開啟多條線程,每條線程可以并行(同時)執(zhí)行不同的任務(wù)
  1. 線程的并行
  • 并行即同時執(zhí)行。比如同時開啟3條線程分別下載3個文件(分別是文件A、文件B、文件C
  1. 多線程并發(fā)執(zhí)行的原理
  • 在同一時間里,CPU只能處理1條線程,只有1條線程在工作(執(zhí)行)
  • 多線程并發(fā)(同時)執(zhí)行,其實是CPU快速地在多條線程之間調(diào)度(切換),如果CPU調(diào)度線程的時間足夠快,就造成了多線程并發(fā)執(zhí)行的假象
  1. 多線程優(yōu)缺點
  • 優(yōu)點:
    能適當提高程序的執(zhí)行效率;
    能適當提高資源利用率(CPU、內(nèi)存利用率)。
  • 缺點
    開啟線程需要占用一定的內(nèi)存空間(默認情況下,主線程占用1M,子線程占用512KB),如果開啟大量的線程,會占用大量的內(nèi)存空間,降低程序的性能;
    線程越多,CPU在調(diào)度線程上的開銷就越大;
    程序設(shè)計更加復(fù)雜:比如線程之間的通信、多線程的數(shù)據(jù)共享。

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

  1. 主線程
  • 一個iOS程序運行后,默認會開啟1條線程,稱為“主線程”或“UI線程”
  • 作用:刷新顯示UI,處理UI事件
  1. 使用注意
  • 不要將耗時操作放到主線程中去處理,因為會卡住線程
  • 和UI相關(guān)的刷新操作必須放到主線程中進行處理

五、iOS中多線程的實現(xiàn)方案

  1. pthread
  • 一套通用的多線程API
  • 適用于Unix\Linux\Windows等系統(tǒng)
  • 跨平臺\可移植
  • 使用難度大
  • 使用語言:c語言
  • 線程生命周期:由程序員進行管理
  1. NSThread
  • 使用更加面向?qū)ο?/li>
  • 簡單易用,可直接操作線程對象
  • 使用語言:OC語言
  • 線程生命周期:由程序員進行管理
  1. GCD
  • 旨在替代NSThread等線程技術(shù)
  • 充分利用設(shè)備的多核(自動)
  • 使用語言:C語言
  • 線程生命周期:自動管理
  1. NSOperation
  • 基于GCD(底層是GCD)
  • 比GCD多了一些更簡單實用的功能
  • 使用更加面向?qū)ο?/li>
  • 使用語言:OC語言
  • 線程生命周期:自動管理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 線程概念 1.1 進程 在現(xiàn)代的操作系統(tǒng)中,進程是資源分配的最小單位,而線程是CPU調(diào)度的基本單位。 一個進程...
    凱玲之戀閱讀 1,031評論 0 0
  • 1、了解多線程的思維 線程是用來執(zhí)行任務(wù)的,線程徹底執(zhí)行完任務(wù)A才能去執(zhí)行任務(wù)B。為了同時執(zhí)行兩個任務(wù),產(chǎn)生了...
    若懷念閱讀 433評論 0 1
  • 一、概念: 進程: 系統(tǒng)中正在運行的一個應(yīng)用程序; 每個進程之間是獨立的,每個進程均運行在其專用且受保護的內(nèi)存空間...
    magic_pill閱讀 218評論 0 0
  • 線程和進程的關(guān)系和區(qū)別 線程定義 線程是進程的基本執(zhí)行單元,一個進程的所有任務(wù)都在線程中執(zhí)行 進程要想執(zhí)行任務(wù),必...
    尤先森閱讀 319評論 0 0
  • 又來到了一個老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始,來談?wù)劜?..
    tangsl閱讀 4,317評論 0 23

友情鏈接更多精彩內(nèi)容