GCD的部分总结

GCD是基于C语言的底层API,用Block定义任务用起来非常灵活便捷.

GCD的基本思想是就将操作放在队列中去执行

(1)操作使用Blocks定义
(2)队列负责调度任务执行所在的线程以及具体的执行时间
(3)队列的特点是先进先出(FIFO)的,新添加至对列的操作都会排在队尾
关于多线程的一些概念:
 
GCD一共有5种队列:main queue :主队列,在主队列中只有一个主线程,本质也是一个串行队列
high priority queue:高优先级队列
low priority queue :低优先级队列
background priority queue:后台队列
default priority queue :默认优先级队列,也叫做自定义队列,又分为:
1:串行队列(serial queue):会顺序执行队列的里面的任务,一次只执行一个任务.
2:并行队列(concurrent queue):会并发的执行队列里面的任务,执行顺序不确定.
常用方法:
dispatch_sync:同步操作(任务),会执行完block的任务才进行下一个任务.
dispatch_async:异步操作(任务),会把block提交给队列就立即返回,不去关心block是否完成,由队列去安排调用里面添加的block.
队列和任务的使用:
(1):串行队列加入同步任务:不会产生新线程,队列会把任务加入主线程中执行,有顺序.
(2):串行队列中加入异步任务:会产生一个子线程.队列会把任务加入到这个子线程中执行,有顺序.
(3):并行队列中加入同步任务:不会产生新线程,队列会把任务加入主线程中执行,有顺序
(4):并行队列中加入异步任务:根据需要产生多个子线程,任务没有顺序执行
(5):主线程队列和GCD创建的队列是不同的。在GCD中创建的队列优先级没有主队列高,所以在GCD中的串行队列开启同步任务里面没有嵌套任务是不会阻塞主线程
在主队列中加入同步任务:  会造成死锁,原因是主队列中只有一个线程就是主线程,而且该线程除非关闭程序,否则一直循环执行,同步任务在主队列中优先级较高,为了能够执行任务    就想抢占主线程资源来执行任务,而主线程却又默认优先处理其他操作,不肯放手.两个的优先级都很高,最终导致死锁,阻塞线程了.
在主队列中加入异步任务:主队列会先降低异步任务的优先级,等空闲时会把该异步任务放入主线程中执行,所以不会造成堵塞,一般的UI更新都在主队列的异步任务中完成.

转载于:https://www.cnblogs.com/ioslaoniu/p/3781127.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将bgr彩色矩阵归一化到0-255之间 【RGB image normalization】

参考下面文章,可以使用normalize 函数。 https://blog.csdn.net/kuweicai/article/details/78988886 对于彩色rgb图像,也可以直接使用以上函数, 参考 https://devtalk.nvidia.com/default/topic/1042100/rgb-image-normalization/?offset8 image cv2…

多线程编程2-NSOperation

本文目录 前言一、NSInvocationOperation二、NSBlockOperation三、NSOperation的其他用法四、自定义NSOperation回到顶部前言 1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步…

python图片显示英文字符_python如何解析字符串中出现的英文人名?

这里有四个例子,结果来自google scholarstr1 "Jakes, William C., and Donald C. Cox. Microwave mobile communications. Wiley-IEEE Press, 1994."str2 "Schlegel, David J., Douglas P. Finkbeiner, and Marc Davis. \"Maps of dust infra…

闪回表操作语法+使用闪回删除

闪回表操作语法 flashback table 【 schema.】 table_name to {【before drop 【rename to new_table_name】 】|【scn | timestamp 】】 expr 【enable | disable 】 triggers}: 参数说明: schema:用户模式 before drop:表示恢复到删除…

在现有的python环境下创建另一个python版本【亲测有效】

比如,你现在的python环境是3.6,想要使用一个3.5,可以在anaconda环境下使用conda虚拟环境。 第一步: conda create -n py35 【创建Py35虚拟环境】 第二步: 进入环境 activate py35 第三步: 升级或者降…

时间戳

我发现,我在本站公布的文章,url 最后一段都是 134 开头的一串数字。一開始并没在意,仅仅想当然以为是程序随机生成的。 昨天跟程序作者交谈的过程中无意问起,他说这是代表时间的。刚才訪问 GoAgent 项目时发现,其作者 …

欧拉函数 - HDU1286

欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)这个集合中与n互质的元素的个数。欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1、令p为一个素数,n p ^ k,则 f(n) p ^ k - p ^ (k-1) 2、令m&…

其中一个页签慢_渭南提升一个大专学历的有效方法

渭南提升一个大专学历的有效方法,宏德教育,目前已形成以高等学历教育为特色王牌,职称考评、企业内训为辅助的强力优势品牌。渭南提升一个大专学历的有效方法, 获得发明专利或实用新型专利,且已实施取得效益。出版本专业…

《收集苹果》 动态规划入门

问题描写叙述 平面上有N*M个格子,每一个格子中放着一定数量的苹果。你从左上角的格子開始,每一步仅仅能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,这样下去,你最多能收集到多少个苹果。 输入&…

Xamarin XAML语言教程通过ProgressTo方法对进度条设置

2019独角兽企业重金招聘Python工程师标准>>> Xamarin XAML语言教程通过ProgressTo方法对进度条设置 在ProgressBar中定义了一个ProgressTo方法,此方法也可以用来对进度条当前的进行进行设置,ProgressTo与Progress属性的不同之处在于ProgressT…

Radar Installation

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id27586 题意: 在海岸线上摆放雷达并限定雷达覆盖半径d,再以海岸线为轴,给定海上岛屿坐标,求至少需要多少雷达可以覆盖所以岛屿,如…

win7 + vs2015+ matlab2016a + python3.5安装matcaffe cpu版本

参考: 1. caffe-windows直接安装版---编译后的Release 2.安装Windows10 和环境下的caffe(新版) 3.win10vs2015编译caffe的cpu debug版本、部署matcaffe 主要的方法参考文献3. 当前caffe-windows仅支持python2.7和3.5 要注意的是&#…

python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区

2018python技术问答集锦,希望能给喜欢python的同学一些帮助小编发现问答专区中有很多人在问关于python的问题,小编把这些问题汇总一下,希望能给喜欢python的大家一些启示和帮助本帖不定期更新,喜欢的可以收藏哦python可能替代Java…

h5新特性

 CSDN博客 Gane_ChengHTML5新特性浅谈 发表于2016/10/17 21:25:58 7809人阅读 分类: 前端 转载请注明出处: http://blog.csdn.net/gane_cheng/article/details/52819118 http://www.ganecheng.tech/blog/52819118.html (浏览效果更好…

打勾显示输入的密码 --EditText与setTransformationMethod

实现目标: 实现原理: 为CheckBox添加一个监听器事件; 实现的源码: package edu.cquptzx.showPassword; import android.app.Activity; import android.os.Bundle; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransforma…

mysql日期截取年月_摄影大赛丨“我遇见最美的光”第五届全国医务人员摄影大展 截稿日期2020年8月15日...

截稿日期2020年8月15日《“我遇见最美的光”第五届全国医务人员摄影大展》欣赏过山川壮丽,瞻仰过造化旖旎,敬重于生命伟大,感动于英雄凯旋……由《大众摄影》主办,正大天晴药业集团股份有限公司、《中国卫生影像》杂志协办的“我遇…

iframe子页面内刷新父页面中另一个iframe子页面

框架页面如下&#xff1a; <div id"aa" style"float: left; height: 500px; border-right-style: solid; border-right-color: #CCCCFF; border-right-width: 2px;"> <IFRAME id"tree" name"tree" src"/ScienProject…

Pytorch的C++接口实践

Pytorch1.1版本已经提供了相对稳定的c接口&#xff0c;网上也有了众多的资料供大家参考&#xff0c;进行c的接口的初步尝试。 可以按照对应的选项下载&#xff0c;下面我们要说的是&#xff1a; 如何利用已经编译好的官方libtorch库和其他的opencv库等联合编写应用&#xff1f…

一次惨痛的装机经历

最近不小心把我的联想一体机电脑系统搞坏了&#xff0c;就不得不重装系统&#xff0c;之前的系统是win7&#xff0c;于是开始的时候想着直接装win10&#xff0c;升级一下系统。但是装的过程中总是卡在了win10的正在准备系统中&#xff0c;进度环不转了。后来转了多次都不行&…

unity让对象作为参数_unity-container – 一个unity容器可以将自身的引用作为构造函数参数传递吗?...

简短的答案是肯定的。当您使用Resolve方法时&#xff0c;这应该自动传递。例如&#xff1a;IUnityContainer container new UnityContainer();var something container.Resolve();另外&#xff0c;如果您想查看&#xff0c;这与Prism(CodePlex)使用的技术相同。更新增加测试&…