Swift3.0 - GCD(Grand Central Dispatch)

主要干什么事情

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

  • DispatchQueue

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

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

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

a.同步

var count = 0
 DispatchQueue.global().sync {
        sleep(1)
        cout += 1
    }
    print(cout)

运行结果:

1

b.异步

var count = 0     
DispatchQueue.global().async {
        sleep(1)
        cout += 1
    }
    print(cout)

运行结果:

0

注意:

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

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

 var cout = 0
    DispatchQueue.main.async {
        sleep(1)
        cout += 1
  }
print(cout)

运行结果:

0

警告:

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

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

var cout = 0
    DispatchQueue.main.sync {
        sleep(1)
        cout += 1
  }
print(cout)

报错:

编译通过,运行错误

e.延时执行

    DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + 3.0) {
        //code
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容