dispatch_sync和dispatch_main有什么区别?

Dou*_*ith 1 concurrency multithreading grand-central-dispatch ios

我明白dispatch_async()在后台线程上运行一些东西,然后dispatch_main()在主线程上运行它,那么它dispatch_sync()会在哪里进来?

Cat*_*Man 6

你通常不想使用dispatch_main().它适用于常规应用程序以外的其他事物(系统守护程序等).事实上,如果你在常规应用中调用它,它肯定会破坏你的程序.

dispatch_sync在队列上运行一个块并等待它完成,dispatch_async在队列上运行一个块并且不等待它完成.

串行队列按顺序一次运行一个块.并发队列一次运行多个块,因此不一定按顺序排列.

(编辑)

也许当你说dispatch_main()你想到的时候dispatch_get_main_queue()