iOS-GCD学习之同步异步线程去执行串行操作
2016-09-05 18:42
519 查看
今天碰到一个需求,在网上找了一下资料,不得不感叹GCD之强大实用。
队列:串行队列,并行队列,全局队列,主队列
//串行队列 同步执行任务 会在当前线程内执行
# 不一定是主线程
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务1 -> 任务2 -》任务3
[objc] view
plain copy
//串行队列 同步执行任务 会在当前线程内执行 //所以打印的会是当前线程的编号 不一定是主线程
-(void)demo
{
//创建串行队列 DISPATCH_QUEUE_SERIAL
// 并行队列 DISPATCH_QUEUE_CONCURRENT
dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
//创建任务
dispatch_block_t task1=^{
NSLog(@"%@ 同步执行了方法1",[NSThread currentThread]);
};
dispatch_block_t task2=^{
NSLog(@"%@ 同步执行了方法2",[NSThread currentThread]);
};
//加入队列
//同步的方式 执行队列
dispatch_sync(queue, task1);
dispatch_sync(queue, task2);
}
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
-(void)demo2
{
//创建串行队列 DISPATCH_QUEUE_SERIAL
// 并行队列 DISPATCH_QUEUE_CONCURRENT
dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
//创建任务
dispatch_block_t task1=^{
NSLog(@"%@ 异步执行了方法1",[NSThread currentThread]);
};
dispatch_block_t task2=^{
NSLog(@"%@ 异步执行了方法2",[NSThread currentThread]);
};
//加入队列
//异步的方式 执行队列
//会顺序执行
dispatch_async(queue, task1);
dispatch_async(queue, task2);
}
队列:串行队列,并行队列,全局队列,主队列
//串行队列 同步执行任务 会在当前线程内执行
# 不一定是主线程
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务1 -> 任务2 -》任务3
[objc] view
plain copy
//串行队列 同步执行任务 会在当前线程内执行 //所以打印的会是当前线程的编号 不一定是主线程
-(void)demo
{
//创建串行队列 DISPATCH_QUEUE_SERIAL
// 并行队列 DISPATCH_QUEUE_CONCURRENT
dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
//创建任务
dispatch_block_t task1=^{
NSLog(@"%@ 同步执行了方法1",[NSThread currentThread]);
};
dispatch_block_t task2=^{
NSLog(@"%@ 同步执行了方法2",[NSThread currentThread]);
};
//加入队列
//同步的方式 执行队列
dispatch_sync(queue, task1);
dispatch_sync(queue, task2);
}
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
-(void)demo2
{
//创建串行队列 DISPATCH_QUEUE_SERIAL
// 并行队列 DISPATCH_QUEUE_CONCURRENT
dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_SERIAL);
//创建任务
dispatch_block_t task1=^{
NSLog(@"%@ 异步执行了方法1",[NSThread currentThread]);
};
dispatch_block_t task2=^{
NSLog(@"%@ 异步执行了方法2",[NSThread currentThread]);
};
//加入队列
//异步的方式 执行队列
//会顺序执行
dispatch_async(queue, task1);
dispatch_async(queue, task2);
}
相关文章推荐
- ios使用GCD来执行同步或异步串行、并行操作。
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等(有示例代码)
- iOS中多线程知识总结:进程、线程、GCD、串行队列、并行队列、全局队列、主线程队列、同步任务、异步任务等
- iOS学习笔记74-IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别附代码
- iOS-线程之GCD方式---之同步异步和串行队列并行队列之间的关系
- GCD的定义及使用详解(同步异步、并发串行、线程间通信、延时执行、只执行一次代码)
- iOS GCD中串行、并行、同步、异步执行顺序的研究
- IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别
- 理解 iOS 开发中 GCD 相关的同步(synchronization)\ 异步(asynchronization),串行(serial)\ 并行(concurrency)概念
- 关于GCD中串行队列、并发队列和同步执行、异步执行的探讨
- IOS GCD的5种队列用法和异步、同步操作
- 【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例(转载)
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- GCD-同步,异步分别在串行队列,并发队列,主队列下的执行方式
- IOS-线程异步操作GCD
- ios的线程和同步异步操作
- IOS-线程异步操作GCD
- iOS:对GCD中 同步、异步、并行、串行的见解
- 线程 GCD 同步执行 异步执行