swift - Dispatch之系统队列的使用1

Dispatch是系统提供的一套用于进行多核多线程编程的API,dispatch会根据CPU的使用情况自动的去创建任务,并把任务提交到队列中进行执行,提高了程序的运行效率

小知识点:Dispatch在GCD层面是没有线程的概念的,其结构是一个先进先出的队列结构。通过block块的方式去提交任务然后会自动的去创建线程并且交给CPU进行执行

两种方法创建一个简单的队列

1、

/*简单的方法去创建线程*/

    func example1() -> Void {

        let queue1 = DispatchQueue(label: "queue1")

        print("queue1:\(queue1)")

    }

2、

 /*含有属性设置的队列*/

    func example2() -> Void {

        let label:String = "queue1" // 线程标签名

        let qos = DispatchQoS.init(qosClass: .default, relativePriority: 0) // 队列的优先级

        let attributes = DispatchQueue.Attributes.concurrent // 队列的种类(并行队列)

        let autoreleaseFrequency = DispatchQueue.AutoreleaseFrequency.never // 队列是否自动释放

        let queue1 = DispatchQueue(label: label, qos: qos, attributes: attributes, autoreleaseFrequency: autoreleaseFrequency, target: nil)

        print("queue1:\(queue1)")

    }

系统提供的队列种类有两种、第一种是主线程队列,第二种是全局线程队列

例如:主线程队列于全局线程队列

/*主线程队列于全局线程队列*/

    func example3() -> Void {

        let mainQueue = DispatchQueue.main

        print("主线程队列:\(mainQueue)")

        let grobleQueue = DispatchQueue.global()

        print("全局线程队列:\(grobleQueue)")

    }

串行队列于并行队列的特点与不同

串行队列:串行队列按照提交的先后顺序依次执行,执行完一个任务才能执行下一个任务

并行队列:并行队列无法确定任务的完成先后顺序,多个任务同时进行执行

同步提交与异步提交的特点与不同

同步提交:sync 执行完进行结果返回

异步提交:async 立即进行返回

两者之间的配合使用:

串行队列与同步提交:

列子:

/*四个任务*/

    func task1() -> Void {

        print("task1开始执行")

        sleep(2)

        print("task1执行结束")

    }

    func task2() -> Void {

        print("task2开始执行")

        sleep(3)

        print("task2执行结束")

    }

    func task3() -> Void {

        print("task3开始执行"

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值