一,一些基本概念的理解
任务:就是系统要处理的事情,简单的理解可以是程序要执行的函数或者方法体
队列:任务的容器,多个任务按照排队的方式放置在队列中。队列是任务的容器,线程是任务执行的资源。
并发:在一个时间片内,多个任务是同时执行的。
串行:任务是挨个执行。
同步:针对队列来说的,队列内的任务是在主线程内执行的,没有开辟新的线程。
异步:针对队列来说的,队列内的任务是新开辟了线程,然后任务在新的线程执行。
注意点:
新手容易出现将线程和任务混淆,这个时候就要将上述概念深刻理解。首先,理解异步和同步,同步和异步的区别是否开辟新的线程,一般解决耗时操作(任务)。并发和串行,决定多个任务之间是否同时执行,解决的是任务间的逻辑关系。
二,NSThread
创建线程的方法:
方法一:使用alloc方法创建,创建完成后必须使用[thread start];启动线程,不然线程不会执行。
NSThread *thread = [[NSThread alloc]initWithTarget:selfselector:@selector(doWCing) object:nil];
//参数说明:object是要传入的方法参数
方法二:类方法创建
[NSThread detachNewThreadSelector:@selector(doWorking) toTarget:self withObject:nil];
缺点:1,NSThread 很难人为的去控制子线程的数量
2,子线程如果创建过多,会严重的影响程序的性能,因为每一个线程都会暂用一定的cpu资源,会导致cpu很忙碌, 特别是多人开发的时候