iOS多線程引見。本站提示廣大學習愛好者:(iOS多線程引見)文章只能為提供參考,不一定能成為您想要的結果。以下是iOS多線程引見正文
1、媒介部門
比來在面試,從新復習了一遍多線程,願望加深一遍關於多線程的懂得。
1、甚麼是過程?
1).要懂得線程我們必需先懂得過程,淺顯來說過程就是在體系中運轉的一個運用法式。
2).每一個線程之間是自力存在的,分離運轉在其公用的且受掩護的內存空間中。
3).好比翻開QQ或Xcode體系會分離開啟兩個過程 如圖:
4)、我們可以經由過程"運動監督器"檢查Mac體系中所開啟的過程。
2、甚麼是線程?
1).一個過程要想履行義務必需得有線程,即一個過程至多要有一個線程。
2).線程是過程的根本履行單位,一個過程(法式)的一切義務都是在線程中履行的。
3).好比應用酷狗播放音樂、應用迅雷下載片子都須要在線程中運轉 如圖:
3、甚麼是線程的串行?
1).一個線程中義務是串行履行的(次序履行)的,也就是說一個線程統一時光內只能履行一個義務。
2).串行履行圖解,好比一個線程下載3個文件(文件A、B、C)
4、甚麼是多線程?
1).一個過程中可以開啟多個線程,每一個線程可以並發(同時)履行分歧的義務。
2).相似關系羅列:過程---->車間;線程---->車間工人
3).多線程圖解,好比同時開啟3個線程分離下載3個文件(文件A、B、C)
5、多線程道理
1).統一時光CPU只能履行一個線程,只要一個線程在任務(履行)。
2).多線程並發(同時)履行,實際上是CPU疾速的在多個線程之間調劑(切換)。
3).假如CPU調劑線程的速度夠快,就會形成多線程並發履行的假象。
4).多線程的缺陷:
1、每一個線程都邑占用必定的內存空間(默許情形下:主線程占用1MB,子線程占用512KB),
假如開啟線程過量會占用年夜量的內存空間因此形成法式機能下降。
2、線程越多CPU調劑線程上的開支就越年夜(相似工場工人越多,工場開支也越年夜)。
3、使法式設計更龐雜:好比多線程的數據通訊,多線程之間的數據同享。
5).多線程的長處:
1、能恰當進步法式的履行效力。
2、能恰當進步資本應用率(CPU、內存的應用率)
6、甚麼是主線程?
1).一個iOS法式開啟後默許會開啟一個線程,這個線程被稱為"主線程"或"UI線程"。
2).主線程的重要感化:
1、顯示/刷新UI界面
2、處置UI事宜(好比點擊事宜、轉動事宜、拖拽事宜等)
3).主線程留意點:
1、別將耗時的操作放在主線程中,耗時操作放在主線程中會形成法式卡頓的成績。
7、耗時操作Demo演示
1)、直接在主線程中運轉的Demo
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //獲得以後履行辦法和以後線程 //number== 主線程 //number!= 其他線程、子線程、次線程 NSLog(@"%s----%@",__func__,[NSThread currentThread]); //直接在主線程中運轉 形成UI操作卡頓 [self longTimeOperation]; } #pragma mark-耗時操作 -(void)longTimeOperation{ for (int i=; i<; i++) { NSLog(@"%d",i); } }
2)、在子線程中運轉的Demo
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //獲得以後履行辦法和以後線程 //number== 主線程 //number!= 其他線程、子線程、次線程 NSLog(@"%s----%@",__func__,[NSThread currentThread]); //將耗時操作放在子線程中履行,不影響UI的操作 [self performSelectorInBackground:@selector(longTimeOperation) withObject:nil]; } #pragma mark-耗時操作 -(void)longTimeOperation{ for (int i=; i<; i++) { NSLog(@"%d",i); } }
以上內容是小編給年夜家引見的ios多線程常識,願望對年夜家有所贊助!