贡献作者 -【XJDomain】
博客XJ: https://my.oschina.net/shengbingli/blog
GitHub直播地址: https://github.com/lishengbing/XJDomainLive
dispatchQueue.global().async { //耗时 *** 作}02-主队列
dispatchQueue.main.async { //刷新UI}03-延迟 *** 作
dispatchQueue.main.asyncAfter(deadline: dispatchTime.Now() + 2) { // 2秒后执行}04-队列组
队列组就是把任务放在
dispatchGroup
中(入组),当任务执行完毕时(出组),即当dispatchGroup
中没有任务时,调用监听方法notify
,注意:入组和出组一定要成对出现,有几个入组,就一定需要有几个出组。
// 创建一个队列组let group = dispatchGroup() // A任务入组group.enter()// A任务异步 *** 作dispatchQueue.global().async(group: group,execute: dispatchWorkItem(block: { sleep(2) print("download task A ...") // 出组 group.leave()}))// B任务入组group.enter()// B任务异步 *** 作dispatchQueue.global().async(group: group,execute: dispatchWorkItem(block: { sleep(2) print("download task B ...") // 出组 group.leave()}))// 主线程监听,只有当队列组中没有任务,才会执行闭包。如果多次调用该方法,每次都会去检查队列组中是否有任务,如果没有任务才执行group.notify(queue: dispatchQueue.main) { print("complete!")}
总结因为task A和task B是加在全局队列中,所以它们的执行顺序由系统决定,但是complete一定是在两个任务完成后才执行。
以上是内存溢出为你收集整理的【swift3.0】【GCD】全部内容,希望文章能够帮你解决【swift3.0】【GCD】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)