轉載自 IOS開發多線程篇-多線程復雜引見 作者:文頂頂
一、進程和線程
1.什麼是進程
進程是指在零碎中正在運轉的一個使用順序
每個進程之間是獨立的,每個進程均運轉在其公用且受維護的內存空間內

比方同時翻開QQ、Xcode,零碎就會辨別啟動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點擊無呼應。

執行剖析:等候主線程串行執行。

開啟子線程。

【iOS多線程復雜引見(線程,進程)】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!