1. 基本概念
1.1 進程 進程是指在系統中正在運行的一個應用程序。每個進程之間是獨立的,每個進程均運行在其專用且受保護的內存空間內。1.2 線程(1)基本概念 一個進程要想執行任務,必須得有線程(每一個進程至少要有1條線程),線程是進程的基本執行單元,一個進程(程序)的所有任務都在線程中執行。(2)線程間串行 1個線程中任務的執行是串行的,如果要在1個線程中執行多個任務,那么只能一個一個地按順序執行這些任務。也就是說,在同一時間內,1個線程只能執行1個任務。1.3 多線程(1)基本概念 即1個進程中可以開啟多條線程,每條線程可以并行(同時)執行不同的任務。(2)線程的并行 并行即同時執行。比如同時開啟3條線程分別下載3個文件(分別是文件A、文件B、文件C。(3)多線程并發執行的原理 在同一時間里,CPU只能處理1條線程,只有1條線程在工作(執行)。多線程并發(同時)執行,其實是CPU快速地在多條線程之間調度(切換),如果CPU調度線程的時間足夠快,就造成了多線程并發執行的假象。(4)多線程優缺點 優點: (1)能適當提高程序的執行效率。 (2)能適當提高資源利用率(CPU、內存利用率)。 缺點: (1)開啟線程需要占用一定的內存空間(默認情況下,主線程占用1M,子線程占用512KB),如果開啟大量的線程,會占用大量的內存空間,降低程序的性能。 (2)線程越多,CPU在調度線程上的開銷就越大。 (3)程序設計更加復雜:比如線程之間的通信、多線程的數據共享。1.4 多線程在iOS開發中的應用 1.4.1 主線程 (1)一個iOS程序運行后,默認會開啟1條線程,稱為“主線程”或“UI線程”。 (2)作用。刷新顯示UI,處理UI事件。 1.4.2 使用注意 (1)不要將耗時操作放到主線程中去處理,會卡住線程。1.5 IOS中多線程的實現方案
2. pthread
pthread 的使用需要包含頭文件。 
3. NSThread
NSThread 創建線程的三種方法:
(1)創建、啟動線程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start];// 線程一啟動,就會在線程thread中執行self的run方法主線程相關用法+ (NSThread *)mainThread; // 獲得主線程- (BOOL)isMainThread; // 是否為主線程+ (BOOL)isMainThread; // 是否為主線程+ 獲得當前線程NSThread *current = [NSThread currentThread];線程的名字- (void)setName:(NSString *)n;- (NSString *)name;(2)創建線程后自動啟動線程
[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];(3)隱式創建并啟動線程
[self performSelectorInBackground:@selector(run) withObject:nil];后兩種創建線程的方式的優缺點:
優點:簡單快捷。 缺點:無法對線程進行更詳細的設置。
新聞熱點
疑難解答