dispatch_once如何只运行一次?

时间:2016-09-09 10:25:56

标签: ios objective-c

我一直在使用dispatch_once进行共享实例,但我不明白的是dispatch_once是如何工作的,为什么它只运行一次。

2 个答案:

答案 0 :(得分:1)

低级计算答案。

试图访问关键部分(传递给dispatch_once的代码)的不同线程将被阻塞,直到关键部分完成为止。

只能是一个

应注意,这仅使对共享实例线程的访问安全。不一定会使类线程安全。

答案 1 :(得分:0)

  

dispatch_once()是同步进程,并且所有GCD方法都是异步执行的(例如,dispatch_sync()是同步的)

     

dispatch_once()的整个想法是“只执行一次”,这正是我们正在做的事情。

Source from Kevin Ballard

  

dispatch_once用于保证某些事情恰好发生一次,无论程序的线程变得多么暴力

dispatch_once upon a time