main.async
vs main.sync()
vs global().async
GCD (Grand Central Dispatch) 是苹果提供的一个并发编程库,用于管理多核处理器上的并行任务执行。GCD 使用队列来组织和调度任务。
main.async
: 在主线程异步执行任务。这意味着任务会被添加到主线程的队列中,但不会阻塞当前线程。main.sync()
: 在主线程同步执行任务。这意味着当前线程会等待任务完成后再继续执行。global().async
: 在全局队列异步执行任务。全局队列是并发执行的,适用于不需要特定线程的任务。main.async
:main.sync()
:global().async
:main.async
:main.sync()
:global().async
:sync()
会导致应用卡顿?sync()
执行耗时任务,会导致主线程阻塞,无法及时响应UI事件。sync()
会导致死锁?sync()
,可能会导致任务互相等待,形成死锁。sync()
,尽量使用 async
。sync()
,尽量使用 async
。main.async
或 main.sync()
。main.async
或 main.sync()
。通过以上解释,希望你能更好地理解 Swift 3 GCD 中的 main.async
、main.sync()
和 global().async
的使用场景和注意事项。
领取专属 10元无门槛券
手把手带您无忧上云