@synchronized()作为目标C中的单例方法做什么?

max_

我刚刚创建了一个单例方法,我想知道该函数的功能@synchronized(),因为我经常使用它,但不知道其含义。

约翰·卡尔斯贝克

在代码块周围声明了一个关键部分在多线程代码中,请@synchronized确保在任何给定时间,只有一个线程可以在块中执行该代码。

如果您不知道它的作用,那么您的应用程序可能不是多线程的,并且您可能不需要使用它(特别是如果单例本身不是线程安全的)。


编辑:添加了一些其他信息,这些信息不在2011年的原始答案中。

@synchronized伪指令可防止多个线程进入任何受引用同一对象@synchronized伪指令保护的代码区域传递给@synchronized指令的对象是用作“锁”的对象。如果将不同的对象用作锁,则两个线程可以位于代码的同一受保护区域中,并且您也可以使用与锁相同的对象来保护两个完全不同的代码区域。

另外,如果您恰好通过nil作为锁定对象,则将根本不会采取任何锁定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章