Dip*_*esh 2 grand-central-dispatch ios
我读了很多文章,指出我们需要更新主线程中的UI,但是每当我更新我的UI时总是代码.
DispatchQueue.main作为回报,它给了我Queue而不是线程.我将如何访问该线程或两者是一样的?
mat*_*att 10
想象一下火车站,火车的数量与它离开的平台的数量相同.
因此,如果您想要#1列车,那么您就站在#1平台上.没有先站在平台上就无法上火车.其他想乘坐这列火车的人也站在平台上等待他们上火车的机会.
火车是线程.平台就是队列.
如果你想进入主线程,请进入主队列.
来自并发编程指南中的调度队列:
主调度队列
主调度队列是一个全局可用的串行队列,它在应用程序的主线程上执行任务。该队列与应用程序的运行循环(如果存在)一起工作,以将排队任务的执行与附加到运行循环的其他事件源的执行交错。因为它在应用程序的主线程上运行,所以主队列通常用作应用程序的关键同步点。
一般GCD维护一个线程池,调度队列和线程之间没有1-1的关系。但是主队列比较特殊:它绑定到主线程,所有分派到主队列的项目都在主线程上执行。(同样适用于OperationQueue.main。)
将代码分派到DispatchQueue.main(或OperationQueue.main) 确保它在主线程上执行,并与其他 UI 更新同步。
从这个意义上说,术语“在主线程上执行”和“在主队列上执行”通常可以互换使用。
DispatchQueue 管理特定线程上代码的执行。
来自苹果文档:
DispatchQueue 管理工作项的执行。提交到队列的每个工作项都在系统管理的线程池上进行处理。
所以,当你打电话时
DispatchQueue.main.async {
//your code
}
Run Code Online (Sandbox Code Playgroud)
该代码被提交到main队列,该队列又在主线程上运行。
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |