1. 程式人生 > >iOS 開發多執行緒及其程序和執行緒的介紹和理解

iOS 開發多執行緒及其程序和執行緒的介紹和理解

iOS開發多執行緒篇—多執行緒簡單介紹

一、程序和執行緒

1.什麼是程序

程序是指在系統中正在執行的一個應用程式

每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內

比如同時開啟QQXcode,系統就會分別啟動2個程序

通過“活動監視器”可以檢視Mac系統中所開啟的程序

2.什麼是執行緒

1個程序要想執行任務,必須得有執行緒(每1個程序至少要有1條執行緒)

執行緒是程序的基本執行單元,一個程序(程式)的所有任務都線上程中執行

比如使用酷狗播放音樂、使用迅雷下載電影,都需要線上程中執行

   

3.執行緒的序列

1個執行緒中任務的執行是序列的

如果要在1個執行緒中執行多個任務,那麼只能一個一個地按順序執行這些任務

也就是說,在同一時間內,1個執行緒只能執行1個任務

比如在1個執行緒中下載3個檔案(分別是檔案A、檔案B、檔案C

 

二、多執行緒

1.什麼是多執行緒

1個程序中可以開啟多條執行緒,每條執行緒可以並行(同時)執行不同的任務

程序 ->車間,執行緒->車間工人

多執行緒技術可以提高程式的執行效率

比如同時開啟3條執行緒分別下載3個檔案(分別是檔案A、檔案B、檔案C

2.多執行緒的原理

同一時間,CPU只能處理1條執行緒,只有1條執行緒在工作(執行)
多執行緒併發(同時)執行,其實是CPU快速地在多條執行緒之間排程(切換)
如果CPU排程執行緒的時間足夠快,就造成了多執行緒併發執行的假象
思考:如果執行緒非常非常多,會發生什麼情況?
CPU會在N多執行緒之間排程,CPU會累死,消耗大量的CPU資源
每條執行緒被排程執行的頻次會降低(執行緒的執行效率降低)

3.多執行緒的優缺點

多執行緒的優點

能適當提高程式的執行效率

能適當提高資源利用率(CPU、記憶體利用率)

多執行緒的缺點

開啟執行緒需要佔用一定的記憶體空間(預設情況下,主執行緒佔用1M,子執行緒佔用512KB),如果開啟大量的執行緒,會佔用大量的記憶體空間,降低程式的效能

執行緒越多,CPU在排程執行緒上的開銷就越大

程式設計更加複雜:比如執行緒之間的通訊、多執行緒的資料共享

4.多執行緒在iOS開發中的應用

主執行緒:一個iOS程式執行後,預設會開啟1條執行緒,稱為“主執行緒”或“UI執行緒”

主執行緒的主要作用

顯示\重新整理UI介面

處理UI事件(比如點選事件、滾動事件、拖拽事件等)

主執行緒的使用注意:別將比較耗時的操作放到主執行緒中。

耗時操作會卡住主執行緒,嚴重影響UI的流暢度,給使用者一種“卡”的壞體驗

5.程式碼示例

複製程式碼
 1 //
 2 //  YYViewController.m
 3 //  01-阻塞主執行緒
 4 //
 5 //  Created by apple on 14-6-23.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 - (IBAction)btnClick;
13 @end
14 
15 
16 @implementation YYViewController
17 
18 
19 - (void)viewDidLoad
20 {
21     [super viewDidLoad];
22 }
23 
24 
25 //按鈕的點選事件
26 - (IBAction)btnClick {
27     //1.獲取當前執行緒
28     NSThread *current=[NSThread currentThread];
29     //2.使用for迴圈執行一些耗時操作
30     for (int i=0; i<10000; i++) {
31         //3.輸出執行緒
32         NSLog(@"btnClick---%d---%@",i,current);
33     }
34 }
35 
36 @end
複製程式碼

 執行效果:

說明:當點選執行的時候,textView點選無響應。

執行分析:等待主執行緒序列執行。

開啟子執行緒。