1.什么是GCD
2.任务和队列
执行任务的方式
队列:串行队列,并行队列,全局队列,主队列
//串行队列 同步执行任务 会在当前线程内执行 # 不一定是主线程
//异步的方式 执行串行队列 会创建一个新的线程来执行任务
//串行的队列都是按照顺序来执行。就是任务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); } 并行队列
//并行队列,同步的方式执行 并不会开辟新线程
//异步的方式 执行并行队列 会创建多个新的线程来执行 多个任务 是随机无序执行的
[objc] view plain copy //并行队列,同步的方式执行 并不会开辟新线程 -(void)demo { //创建串行队列 DISPATCH_QUEUE_SERIAL // 并行队列 DISPATCH_QUEUE_CONCURRENT dispatch_queue_t queue=dispatch_queue_create("itcast", DISPATCH_QUEUE_CONCURRENT); //创建任务 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_CONCURRENT); //创建任务 dispatch_block_t task1=^{ NSLog(@"%@ 异步执行了方法1",[NSThread currentThread]); }; dispatch_block_t task2=^{ NSLog(@"%@ 异步执行了方法2",[NSThread currentThread]); }; //加入队列 //异步的方式 执行队列 //会顺序执行 dispatch_async(queue, task1); dispatch_async(queue, task2); }
转载自:http://blog.csdn.net/yang__xz/article/details/50813681
