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