什么是多線程
- 1個進程中可以開啟多條線程,每條線程可以并行(同時)執(zhí)行不同的任務(wù)
多線程的原理
- 同一時間,CPU只能處理1條線程,只有1條線程在工作(執(zhí)行)
- 多線程并發(fā)(同時)執(zhí)行,其實是CPU快速的在多條線程之間切換
- 如果CPU切換線程的時間足夠快,就造成了多線程并發(fā)的假象
如果線程非常非常多,會發(fā)生什么情況?
- CPU會在N多線程之間切換,CPU會累死,消耗大量的CPU資源
- 每條線程被切換執(zhí)行的頻次會降低(線程的執(zhí)行效率降低)
多線程的優(yōu)點
- 能適當(dāng)提高程序的執(zhí)行效率
- 能適當(dāng)提高資源利用率(CPU,內(nèi)存利用率)
多線程的缺點
- 創(chuàng)建線程是有開銷的,iOS下主要成本包括:內(nèi)核數(shù)據(jù)結(jié)構(gòu)(大約1KB),椚兀空間(子線程512KB,主線程1MB,也可以使用setStackSize:設(shè)置,但必須是4KB的倍數(shù),而且最小是16KB),創(chuàng)建線程大約需要90毫秒的創(chuàng)建時間
- 如果開啟大量的線程,會降低程序的性能
- 線程越多,CPU在調(diào)度線程上的開銷就越大
- 程序設(shè)計更加復(fù)仇:比如線程之間的通信,多線程的數(shù)據(jù)共享