标签: objective-c multithreading grand-central-dispatch
dispatch_once中的块运行在哪个线程? 如果代码是从主线程运行的,dispatch_once块可以在后台线程中运行吗?无论哪个线程执行它,我如何确保它在主线程上运行?
答案 0 :(得分:6)
它在当前/调用线程中运行。如果你想我想你可以使用dispatch_sync来确保它在后台线程上运行,但我不确定那会让你得到什么。总而言之,它在当前线程中运行。如果另一个线程已经在dispatch_once块中,则调用线程将阻塞,直到该块在另一个线程上完成执行,然后继续。
dispatch_sync
dispatch_once