美文网首页
GCD自定义队列的学习小结(swift)

GCD自定义队列的学习小结(swift)

作者: 马路边的油酥饼 | 来源:发表于2017-02-09 11:44 被阅读0次

1.创建自定义队列

(1.)DispatchQueen(label:"") 默认为串行队列

//串行

let serialQueen = DispatchQueue(label:"serial");

serialQueen.sync {

print("最先加入的任务")

}

serialQueen.sync {

print("次之加入的任务")

}

print("最后的任务")

当前线程等待串行队列中的子线程执行完成之后再执行,串行队列中先进来的子线程先执行任务,执行完成后,再执行队列中后面的任务。

自定义串行队列嵌套执行同步任务会发生死锁(自定义串行队列异步嵌套执行同步任务同理)

let serialQueen = DispatchQueue(label:"serial");

serialQueen.sync {

print("会执行的代码")

serialQueen.sync {

print("不会执行的代码")

}

}

串行队列中的线程顺序执行,需等到上面的同步任务执行完毕开启下面的同步任务。而上面的同步任务还没有执行完。要等到下面的大括号才算执行完毕。但是下面的同步任务已经抢占资源了,所以它们会产生相互等待的转态。

自定义并发队列同步嵌套执行任务不会发生死锁

//并发

let concurrentQueue = DispatchQueue(label: "name", attributes: .concurrent)

concurrentQueue.sync {

print("会执行的代码")

concurrentQueue.sync {

print("会执行的代码")

}

}

因为是并发队列,第一个大括号里的任务不会相互等待,不会产生死锁。

相关文章

  • GCD学习(二)

    GCD学习一 GCD学习二 GCD学习三 一。队列有哪几种呢? 1.1、自定义的队列 :dispatch_queu...

  • GCD自定义队列的学习小结(swift)

    1.创建自定义队列 (1.)DispatchQueen(label:"") 默认为串行队列 //串行 let se...

  • GCD 个人理解

    看GCD精讲(Swift 3&4)做的笔记 gcd 让开发人员由面向线程编程编为面向队列编程。 队列: 同步队列、...

  • GCD 组队列学习小结

    使用场景:网络下载图片,全部图片下载完成后 加载到界面 创建组队列,创建全局队列,回去住队列 将异步任务添加到全局...

  • GCD使用·记录

    一、开端 队列与任务创建 dispatch_queue_t 自定义GCD队列,区分串行队列与并行队列 dispat...

  • GCD串行并发队列

    学习完本篇,您会对以下知识点更加理解: 队列 串行队列 并发队列 GCD全局队列 GCD主队列 创建串行队列 创建...

  • 【iOS】Swift4.0 GCD的使用笔记

    前言 在Swift4.0版本中GCD的常用方法还是有比较大的改动,这里做个简单的整理汇总。 GCD的队列 队列是一...

  • 只言片语(暂记)

    1.GCD:开发者可以自定义队列:串行或并行队列。在自定义队列中被调度的所有block最终都将被放入到系统的全局队...

  • 06进阶之路-多线程管理

    1. GCD相关 学习链接 GCD 简介 (多核编程管理线程) GCD 任务和队列(同步和异步任务 并发和串行队列...

  • GCD常用方法

    本文主要介绍GCD一些API的使用,也就是注重实站! 一、GCD常用API1.并发队列2.串行队列3.设置自定义队...

网友评论

      本文标题:GCD自定义队列的学习小结(swift)

      本文链接:https://www.haomeiwen.com/subject/qzliittx.html