GCD-03

1,队列和任务

1)任务:需要执行什么操作

*用block来封装任务

2)队列:存放任务

*全局的并发队列:可以让任务并发执行

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

*自己创建的串行队列:让任务一个接一个执行

dispatch_queue_t queue = dispatch_queue_create("cn.heima.com", NULL);

*主队列:让任务在住线程执行

dispatch_queue_t queue = dispatch_get_main_queue();

2,执行任务的函数

1)同步执行:不具备开启新线程的能力

dispatch_sync:

2)异步执行:具备开启新线程的能力

dispatch_async:

3,常见的组合

1)dispatch_async + 全局并发队列

2)dispatch_async + 自己创建的串行队列

4,线程间的通信

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// 执行耗时的并行操作。。。

dispatch_async(dispatch_get_main_queue(), ^{

// 回到主线程,执行UI刷新操作

});

});

5,GCD的所有API都在libdispatch.dylib,Xcode会自动导入这个裤

*主头文件:#import <dispatch/disaptch.h>

时间: 2024-10-02 20:38:22

GCD-03的相关文章

多线程——NSThread、GCD、NSOperation

1.前言: 一个应用程序就是一个进程,一个进程至少包含一个线程,程序启动会自动创建一个主线程,负责UI界面的现实和控件事件的监控.多线程可以更充分的利用系统CPU资源,一定程度上提升程序的性能.1个进程可以开启多条线程,每条线程可以并行(同时)执行不同的任务.在一个线程内可以包含多个事物(要干的活),在线程内依据先进先出的特性串行执行…… 2.NSThread - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"main thread is %@

GCD dispatch_apply基本使用

dispatch_apply,可以并发的循环迭代,性能上可以提高,前提是循环不在乎迭代的顺序 dispatch_queue_t queue = dispatch_queue_create("HJiang", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ dispatch_apply(10, queue, ^(size_t i) { NSLog(@"%zd %@",i,[NSThread currentThr

IOS开发之多线程 -- GCD的方方面面

前言:这篇GCD的博文是本人阅读了很多海内外大神的关于GCD的文章,以及结合之前自己对GCD的粗浅的认识,然后取其精华,去其槽粕,综合起来的笔记,而且是尽可能的以通熟易懂的并且是正确的理论论述方式呈现给读者,同时也是讲大神博客中有的深涩的理论理解的通熟易懂转述给读者,已经是尽可能的让读者深入理解和掌握多线程的知识以及GCD的使用技术.最后的附录中,我将会给出所有本人阅读的大神写的关于多线程或者是GCD的文章链接,大家感兴趣的,可以去参考和学习.也许,看我的这篇就够了,因为我就是参考他们的,嘻嘻.

完整详解GCD系列(四)dispatch_semaphore(信号量)

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 一 何为信号量? 简单来说就是控制访问资源的数量,比如系统有两个资源可以被利用,同时有三个线程要访问,只能允许两个线程访问,第三个应当等待资源被释放后再访问. 注意:再GCD中,只有调度的线程在信号量不足的时候才会进入内核态进行线程阻塞 二 如何使用信号量 三个主要函数 创建一个信号量 func dispatch_semaphore_create(_ value: In

Object-C关于GCD多线程的使用

```objc1 使用Crearte函数创建的并发队列和全局并发队列的主要区别: 1)全局并发队列在整个应用程序中本身是默认存在的并且对应有高优先级.默认优先级.低优先级和后台优先级一共四个并发队列,我们只是选择其中的一个直接拿来用.而Create函数是实打实的从头开始去创建一个队列. 2)在iOS6.0之前,在GCD中凡是使用了带Create和retain的函数在最后都需要做一次release操作.而主队列和全局并发队列不需要我们手动release.当然了,在iOS6.0之后GCD已经被纳入到

iOS-线程之GCD方式---之同步异步和串行队列并行队列之间的关系

GCD方式是Apple官方推荐实现多线程的方式 但在这之前必须理清楚同步,异步,串行队列,并行队列之间的概念. 同步:即当前的执行程序块不会创建一个新的线程,只能在当前线程中执行. 异步:会在当前的线程之外创建一个新的线程,并在新的线程中执行代码块. 首先声明一点,队列是用来存放即将执行的线程体的. 串行队列:串行队列中的线程满足FIFO(First In First Out),并且只有在先出的线程执行完,后续的线程才能出队列执行.(很可能造成APP的假死状态) 并行队列:并行队列也满足FIFO

多线程编程4 - GCD

一.简介 在iOS所有实现多线程的方案中,GCD应该是最有魅力的,因为GCD本身是苹果公司为多核的并行运算提出的解决方案.GCD在工作时会自动利用更多的处理器核心,以充分利用更强大的机器.GCD是Grand Central Dispatch的简称,它是基于C语言的.如果使用GCD,完全由系统管理线程,我们不需要编写线程代码.只需定义想要执行的任务,然后添加到适当的调度队列(dispatch queue).GCD会负责创建线程和调度你的任务,系统直接提供线程管理 二.调度队列(dispath qu

iOS多线程编程(四)------ GCD(Grand Central Dispatch)

一.简介 是基于C语言开发的一套多线程开发机制,也是目前苹果官方推荐的多线程开发方法,用起来也最简单,只是它基于C语言开发,并不像NSOperation是面向对象的开发,而是完全面向过程的.如果使用GCD,完全由系统管理线程,我们不需要编写线程代码.只需定义想要执行的任务,然后添加到适当的调度队列(dispatch_queue).GCD会负责创建线程和调度你的任务,系统会直接提供线程管理. 二.任务和队列 GCD中有两个核心概念 (1)任务:执行什么操作 (2)队列:用来存放任务 GCD的使用就

创建线程方式-GCD

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

iOS多线程编程之GCD

1.GCD介绍 Grand Central Dispatch 简称(GCD)是Apple公司开发的技术,相比NSThread或NSOperation使用方便,并且优点是当处理器为多核时能利用多核的特征来创建线程.它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用. 2.GCD分类 GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行,dispatch queue分为下面3种:一种是串行队列(Serial Dispatch Queue),一种是并行