1、多線程的原理
在同一時間內,(單核)CPU只能處理1條線程,只有1條線程在工作(執行)。因此,多線程併發(同時)執行,其實是CPU快速地在多條線程之間調度(切換)。如果CPU調度線程的時間足夠快,就造成了多線程併發執行的假象。
思考:如果線程非常非常多,會發生什麼情況?
1、CPU會在N多線程之間調度,CPU會累死,消耗大量的CPU資源
2、每條線程被調度執行的頻次會降低(線程的執行效率降低)
2、多線程的優缺點
多線程的優點
1、能適當提高程序的執行效率
2、能適當提高資源利用率(CPU、內存利用率)
多線程的缺點
1、開啓線程需要佔用一定的內存空間(默認情況下,主線程佔用1M,子線程佔用512KB),如果開啓大量的線程,會佔用大量的內存,降低程序的性能
2、線程越多,CPU在調度線程上的開銷就越大
3、程序設計會更加複雜(比如線程之間的通信、多線程的數據共享)
3、iOS的多線程的方案
1、Pthreads
2、NSThread
3、GCD
3、NSOperation & NSOperationQueue
pthread
pthread是一套通用的多線程的API,可以在Unix / Linux / Windows 等系統跨平臺使用,使用C語言編寫,需要程序員自己管理線程的生命週期,使用難度較大。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
pthread_t thread;
//創建一個線程並自動執行
pthread_create(&thread, NULL, start, NULL);
}
void *start(void *data) {
return NULL;
}