主要干什么事情
通过提交任务到系统管理的调度队列,同时在多核硬件上执行代码
- 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
}