我们先来说一下进程和线程:
我们一般在什么情况下用多线程:
1)大量运算 比如for循环计算量特别大的时候;
2)数据读取(本地) 数据库查询所有的东西
3)网络请求的时候(同步)
注意:我们手动创建的子线程要手动添加一个自动释放池
所有的子线程都不能修改UI的界面
IOS多线程的实现种类:
1)NSThread:是一个轻量级的多线程,有两种创建方法
a:
NSThread *thread1 = [[[NSThread alloc] initWithTarget:self selector:@selector(calculator) object:nil] autorelease];
[thread1 start];
b:
[NSThread detachNewThreadSelector:@selector(calculator) toTarget:self withObject:nil];
2)NSObject
[self performSelectorInBackground:@selector(calculator) withObject:nil];
3)NSOperation和NSOperationQueue(线程队列(线程并发))
NSOperation不直接创建,用继承
NSOperationQueue的创建:
Connect *operation1 = [[Connect alloc] init];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
设置最大并发数:为一的时候线程与线程之间是同步
[queue setMaxConcurrentOperationCount:1];
[queue addOperation:operation1];
[operation1 release];
[queue release];
4)GCD线程
具有一定功能的代码段
线程要么是同步(一个执行完事在执行另一个(serial))要么是并发的(concnrrent)
serialQueue同步队列,一次只执行一个任务;
concurrent可以并发地执行多个任务;
serialQueue的创建:
concurrent的创建: