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;
}