IOS開發網絡第一天之01耗時操做



基礎知識:web

1.進程:正在運行的應用程序多線程

每一個進程之間是獨立的,每一個進程均運行在其專用且受保護的內存空間內併發

2.線程:性能

1個進程要想執行任務,必須得有線程(1個進程至少要有1條線程spa

線程是進程的基本執行單元,一個進程(程序)的全部任務都在線程中執行線程

1個線程中任務的執行是串行(順序執行)設計

若是要在1個線程中執行多個任務,那麼只能一個一個地按順序執行這些任務code

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

什麼是多線程?進程

1個進程中能夠開啓多條線程,每條線程能夠併發(同時)執行不一樣的任務

進程 車間,線程 車間工人

多線程技術能夠提升程序的執行效率

多線程的原理

同一時間,CPU只能處理1條線程,只有1條線程在工做(執行)

多線程併發(同時)執行,實際上是CPU快速地在多條線程之間調度(切換)

若是CPU調度線程的時間足夠快,就形成了多線程併發執行的假象

思考:若是線程很是很是多,會發生什麼狀況?

CPU會在N多線程之間調度,CPU會累死,消耗大量的CPU資源

每條線程被調度執行的頻次會下降(線程的執行效率下降)

多線程的優勢

能適當提升程序的執行效率

能適當提升資源利用率(CPU、內存利用率)


多線程的缺點

開啓線程須要佔用必定的內存空間(默認狀況下,主線程佔用1M子線程佔用512KB),若是開啓大量的線程,會佔用大量的內存空間,下降程序的性能

線程越多,CPU在調度線程上的開銷就越大

程序設計更加複雜:好比線程之間的通訊、多線程的數據共享

什麼是主線程?

一個iOS程序運行後,默認會開啓1條線程,稱爲主線程「UI線程


主線程的主要做用

顯示\刷新UI界面

處理UI事件(好比點擊事件、滾動事件、拖拽事件等)


主線程的使用注意

別將比較耗時的操做放到主線程中

耗時操做會卡住主線程,嚴重影響UI的流暢度,給用戶一種的壞體驗

    //將耗時操做放在主線程中(沒有開啓新的線程,

    //程序啓動時會自動建立一個住線程來執行應用程序中的操做)

 //   [self longTimeOperation];

    //耗時操做放到主線程中會形成很差的用戶體驗


代碼以下:

- (void) test5{

//獲得當前線程

NSThread *thread1 = [NSThread currentThread];

//拿到主線程 

NSThread *mainThread = [NSThread mainThread];

}

#pragma mark - 耗時操做

- (void)longTimeOperatioin{

for(int i =0;i < 1000;i++){

NSLog(@"耗時操做");

}

}

相關文章
相關標籤/搜索