它在代码挡路周围声明一个critical section.在多线程代码中,@synchronized
保证在任何给定时间只有一个线程可以执行挡路中的代码.
如果您不知道它的作用,那么您的应用程序可能不是多线程的,您可能不需要使用它(特别是如果单例本身不是线程安全的).
Edit:添加了2011年原始答案中没有的更多信息.
@synchronized
号指令prevents multiple threads from entering any region of code that is protected by a @synchronized
directive referring to the same object号.传递给@synchronized
指令的对象是用作"锁"的对象.如果将不同的对象用作锁,则两个线程可以位于同一受保护的代码区域中,您还可以使用与锁相同的对象来保护两个完全不同的代码区域.
此外,如果恰好将nil
作为锁对象传递,则根本不会获取任何锁.