iOS —— 多線程基礎,ios多線程基礎
一、進程
進程可以理解為一個應用程式;比如說開啟 QQ,那麼在記憶體中就會為 QQ 分配一塊進程;開啟,那麼在記憶體中就會為 分配一塊進程;並且進程之間是相互獨立的
二、線程1. 基本概念
線程是進程的基本單元(可以理解為一個進程中的各個操作);比如說 QQ,其中的很多操作,比如說傳送檔案,下載圖片等,這些都是子線程
例如 xcode 進程中的線程
一個進程最少有一個線程,稱為主線程
進程的各個操作都是在主線程或子線程中完成的
2. 串列、並行
串列和並行都是針對線程而言的
串列
串列是指一個線程中的任務一個一個執行,即上一個任務執行完,下一個任務才能繼續;即在同一時間內,只能執行一個任務
可以看出,串列的耗時是所有任務的總和
並行
並行是指一個線程中的任務可以同時進行;即在同一時間內可以進行多個任務
3. 多線程1)概念
因為每個進程最少都一個線程(主線程),在主線程中還可以建立多個子線程,並且主線程和子線程中的任務是互不干涉的;
也就是說,在同一時間內,可以同時進行主線程和子線程中的任務
2)原理a. 單核作業系統 在單核作業系統上,因為在同一時間內只能運行一個任務,那如何?多線程呢??
系統會為每一個線程指定一個確定的執行時間,當然這個時間很短,然後在各個線程之間做切換(調度),以此來達到多線程
可以看出,單核作業系統的多線程實際上還是串列的,只不過在時間很短的情況下進行線程之間的切換,所以看起來就好像是多線程了
b. 多核作業系統
在多核作業系統上,在同一時間內可以運行多個任務,所以很容易實現多線程,並且是真正的多線程
3)優缺點a. 優點 能提高 CPU 的利用率和執行效率b. 缺點 消耗記憶體(建立一個新的線程會消耗一定的記憶體) 如果開啟的線程過多,那麼 CPU 的開銷就越大
4)iOS 的多線程
iOS 應用在啟動後,只會開啟一條線程(主線程,也稱 UI 線程)
通常,在 主線程 中做一些不耗時的工作;例如 重新整理 UI 介面、監控事件等