您好,登錄后才能下訂單哦!
多任務系統調度
每個應用程序由操作系統分配的短暫的時間片(Timeslice)輪流使用CPU,由于CPU對每個時間片的處理速度非常快,用戶會感覺這些任務好像是同時執行
并發:多個任務在同一段時間內同時執行,但在一個時間點,一個CPU只能執行一個任務。
進程與線程
進程
正在運行的程序,負責程序的內存分配
每一個進程都有自己獨立的虛擬內存空間
線程
線程是進程中一個獨立執行路徑(控制單元)
一個進程中至少包含一條線程,即主線程
可以將耗時的執行路徑(如:網路請求)放在其他線程中執行
進程與線程的區別:
進程是分配資源的最小單位,線程是處理器調度的最小單位
創建線程的目的:
為了開啟一條新的執行路徑,運行指定的代碼,與主線程中的代碼實現同時執行。
在iOS應用中,主線程的棧區控件為1M,子線程的棧區為512K
多線程開發簡介
優勢
1)充分發揮多核處理器的優勢,將不同線程任務分配給不同的處理器,真正進入“并行計算”狀態。
2)將耗時的任務分配到其他線程,由主線程負責更新界面,使應用程序運行更加流暢,用戶體驗更好。
3)當硬件處理器的數量增加時,程序運行更快,代碼無需調整
弊端 :新建線程會消耗內存空間和CPU時間,線程太多會降低系統運行性能。
誤區 :
1)多線程技術是為了并發執行多項任務,不會應用程序的執行效率。
2)算法的設計、優化,是提高程序執行效率的方案。
iOS開發中用到的線程技術
iOS本質上是Unix系統,可以支持pthread線程庫,但并不推薦
iOS中進行多線程的操作,管理方式是“線程池”
線程池中的關鍵元素:線程調度中心、任務隊列。
線程調度中心:負責創建線程、從任務隊列取出并分配任務的執行。
任務隊列:存儲需要多線程執行的任務。
對于開發人員,想要實現多線程的任務,只需要向指定的任務隊列放入任務即可,線程調度中心會分配并自動去執行這些任務。
iOS開發中常用的線程技術包括:
1)NSObject提供了的多線程方法
建立線程非常方便,但對線程管理很難實現,不推薦
2)GCD —— Grand Central Dispatch 大中心調度
基于C語言的API,相對底層。使用BLOCK定義任務行為,使用起來簡單靈活
3)NSOperation
基于GCD實現的一套Objective-C的面向對象接口,且提供了一些GCD不容易實現的特性
NSThread
描述了一個線程對象,線程對象不需要我們去創建,而是由任務隊列負責創建及管理
通過線程對象,可以獲得線程的狀態信息
獲得當前的線程對象:
+ (NSThread *)currentThread
使用%@打印線程對象,能夠查看到線程的一些信息
線程睡眠方法:
+ (void)sleepForTimeInterval:(NSTimeInterval)ti
當前線程終止方法:
+ (void)exit
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。