一、GCD:
1、GCD队列:
(1)定义dispatch_queue_t queue;
(2)创建一个队列:dispatch_queue_t queue = dispatch_queue_create("QueueId", DISPATCH_QUEUE_CONCURRENT);
参数一:QueueId队列唯一标示;
参数二:DISPATCH_QUEUE_CONCURRENT标示并行(DISPATCH_QUEUE_SERIAL串行)
2、开启线程任务:
(1)同步线程,加入队列
dispatch_sync(queue, ^{
// 线程任务 执行结束后返回主线程
dispatch_sync(dispatch_get_main_queue(), ^{
});
});
(2)异步线程,加入队列
dispatch_async(queue, ^{
// 线程任务 执行结束后返回主线程
dispatch_sync(dispatch_get_main_queue(), ^{
});
});
注:(1)异步线程执行耗时代码块后需要返回主线程刷新UI
(2)开发中常用到的一般为并行队列异步执行
二、NSOperation:
NSOperation是一个抽象类,使用其子类
1、NSOperationQueue队列
(1)创建队列
NSOperationQueue * queue = [[NSOperationQueue alloc] init];
[queue setMaxConcurrentOperationCount:4];//最大执行量
2、开启线程加入队列
(1)方式一:NSBlockOperation * operation = [NSBlockOperation blockOperationWithBlock:^{
// 线程任务 执行结束后返回主线程
[[NSOperationQueue mainQueue] addOperationWithBlock:^{}];
}];
[queue addOperation:operation];
以上为常用的多线程,iOS开发中还有很多,就不一一举例;