多线程--GCD
来源:互联网 发布:微软鼠标与mac匹配 编辑:程序博客网 时间:2024/05/22 01:26
GCD的基本思想:将操作放在队列中去执行
1.操作使用的Blocks定义
2.队列负责调度任务执行所在的线程以及具体的执行时间
3.队列的特点就是先进先出(FIFO)的,新添加至队列的操作都会在队尾。
基本格式:
GCD的函数都是以dispatch(分派,调度)开头的
队列:(队列不是线程,也不表示对应的cpu,队列就是负责调度的,谁空闲,就把任务给谁)
dispatch_queue_t :
串行队列,队列中的任务只会顺序执行(简单的理解:体育课上排队跑步,一个接着一个,保持队形)
下面示例为串行队列,的异步操作。在实际开发中非常有用,也安全。
dispatch_queue_t q = dispatch_queue_create(参数1,参数2);//非ARC开发时,注意需要release。
参数1:是一个字符串类型,可以根据你所定义的字符串来跟踪到当前队列。
参数2:队列的属性:1.DISPATCH_QUEUE_SERIAL串行队列; 2.DISPATCH_QUEUE_CONCURRENT并行队列
dispatch_queue_t q = dispatch_queue_create(“GCDdemo1”,DISPATCH_QUEUE_SERIAL);
dispatch_async(q,^{
NSLog(@"%@",[NSThread currentThread]);
});
全局队列(不需要创建,直接get)
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEAFAULT,0);
主线程队列(每一个应用程序只有一个主线程,iOS开发中,所有UI的更新工作,都必须在主线程上执行)
dispatch_queue_t q = dispatch_get_main_queue();
并行队列,队列中的任务通常会并发执行(没有队形,执行顺序程序员不可控)
dispatch_queue_t q = dispatch_queue_create(GCDdemo2,DISPATCH_QUEUE_CONCURRENT);
dispatch_async(q,^{
NSLog(@"%@",[NSThread currentThread]);
});
操作:
dispatch_async异步操作,会并发执行,无法确定任务的执行顺序
dispatch_sync同步操作,会依次顺序执行,能够决定任务的执行顺序
- GCD多线程
- 多线程GCD
- GCD多线程
- 多线程-GCD
- 多线程 gcd
- 多线程GCD
- 多线程&GCD
- GCD多线程
- 多线程GCD
- 多线程:GCD
- 多线程-GCD
- 多线程GCD
- 多线程-GCD
- GCD(多线程)
- 多线程GCD
- 多线程GCD
- 多线程 GCD
- 多线程GCD
- [leetcode Q33] Search in Rotated Sorted Array
- 需求管理之从用户接触到完成需求说明书
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- 腾讯研发工程师A笔试卷
- 需求管理之客户需求何时休?
- 多线程--GCD
- python集合操作
- 傻瓜学算法系列之排序——5.快速排序
- Leetcode Q7
- mybatis返回插入的id以及类属性和表字段不一致问题
- oracle 多行转一列,一列转多行
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
- 怎样串联两台无线路由器:[2]无线AP设置
- jdbc怎么连接oracle数据库?