iOS多線程

進程:

1.正在進行中的程序被稱爲進程,負責程序運行的內存分配

2.每個進程都有自己獨立的虛擬空間

線程:

1.線程是進程中一個獨立的執行路徑(控制單元)

2.一個進程中至少包含一條線程,即主線程

3.可以將耗時的執行路徑(如:網絡請求)放在其他線程中執行

總結:創建線程的目的就是爲了開啓一條新的執行路徑,運行指定的代碼,與主線程的代碼實現同時運行。




主線程棧區有1M,而子線程只有512K。而子線程在未完成進程任務的時候,是不能被殺死的,但是可以將其休眠,暫停。當子線程的進程任務

完成之後,系統纔會回收子線程。


多線程的優勢:

1.充分發揮多核處理器優勢,將不同線程任務分配給不同的處理器,真正進入“並行運算”狀態。

2.將耗時的人物分配到其他線程執行,由主線程負責統一更新界面會使應用更加流暢,用戶體驗更好

3.將硬件處理器的數量增加,程序會運行更快,而程序無需做任何調整


弊端:新建線程會消耗內存空間和CPU時間,線程太多會降低系統的運行性能


誤區:多線程技術是爲了併發執行多項任務,不會提高單個算法本身的執行效率


iOS中三種多線程技術:

NSThread:

1.使用NSThread對象建立一個線程非常方便

2.使用NSThread管理多個線程非常困難,不推薦使用

3.使用最多的【NSThread    currentThread 】獲取當前線程,適用於NSThread,NSOperation,GCD這三種技術

NSOperation/NSOperation Queue:

1.是使用GCD實現的一套OC的API

2.是面向對象的線程技術

3.提供了一些在GCD中不容易實現的特性,如:限制最大的 併發數量,操作之間的依賴關係

GCD(Grand Central Dispatch)

1.是基於C語言的底層API

2.是Block定義任務,使用起來靈活便捷

3.提供了更多的控制能力以及操作隊列中所不能使用的底層函數。















發佈了37 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章