dispatch_once中的块运行在哪个线程?

时间:2014-09-17 17:47:26

标签: objective-c multithreading grand-central-dispatch

dispatch_once中的块运行在哪个线程? 如果代码是从主线程运行的,dispatch_once块可以在后台线程中运行吗?无论哪个线程执行它,我如何确保它在主线程上运行?

1 个答案:

答案 0 :(得分:6)

它在当前/调用线程中运行。如果你想我想你可以使用dispatch_sync来确保它在后台线程上运行,但我不确定那会让你得到什么。总而言之,它在当前线程中运行。如果另一个线程已经在dispatch_once块中,则调用线程将阻塞,直到该块在另一个线程上完成执行,然后继续。