前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift3.0 - GCD(Grand Central Dispatch)

Swift3.0 - GCD(Grand Central Dispatch)

作者头像
酷走天涯
发布2018-09-14 15:00:30
4110
发布2018-09-14 15:00:30
举报
主要干什么事情

通过提交任务到系统管理的调度队列,同时在多核硬件上执行代码

  • DispatchQueue

负责管理工作项目的执行。提交到队列中的每个任务将在系统管理的线程池中处理,

同步执行:程序会等待直到方法执行完成后,才会执行后面的程序 异步执行:程序不会等待方法执行完毕,它会立即执行

我们看一个例子就好理解同步和异步了

a.同步

代码语言:javascript
复制
var count = 0
 DispatchQueue.global().sync {
        sleep(1)
        cout += 1
    }
    print(cout)

运行结果:

1

b.异步

代码语言:javascript
复制
var count = 0     
DispatchQueue.global().async {
        sleep(1)
        cout += 1
    }
    print(cout)

运行结果:

0

注意:

同步和异步与线程没有关系,主线程也能异步执行

c.在主线程运行下面代码

代码语言:javascript
复制
 var cout = 0
    DispatchQueue.main.async {
        sleep(1)
        cout += 1
  }
print(cout)

运行结果:

0

警告:

在主线程不能同步执行主线程代码

d.运行在主线程的同步主线程

代码语言:javascript
复制
var cout = 0
    DispatchQueue.main.sync {
        sleep(1)
        cout += 1
  }
print(cout)

报错:

编译通过,运行错误

e.延时执行

代码语言:javascript
复制
    DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + 3.0) {
        //code
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要干什么事情
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档