我只想每个实例运行一次代码块。
我可以将dispatch_once_t谓词声明为成员变量而不是静态变量吗?
From GCD 参考,我不清楚。
谓词必须指向存储在全局或静态中的变量
范围。使用自动或动态谓词的结果
存储未定义。
我知道我可以使用dispatch_semaphore_t和布尔标志来做同样的事情。我只是好奇。
dispatch_once_t
不能是实例变量。
实施dispatch_once()
要求dispatch_once_t
为零,并且从来没有非零。以前的非零情况需要额外的内存屏障才能正常工作,但是dispatch_once()
出于性能原因忽略了这些障碍。
实例变量被初始化为零,但它们的内存可能先前存储了另一个值。这使他们不安全dispatch_once()
use.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)