gpt4 book ai didi

objective-c - @synchronized() 作为 Objective-C 中的单例方法有什么作用?

转载 作者:行者123 更新时间:2023-12-01 16:23:42 24 4
gpt4 key购买 nike

我刚刚创建了一个单例方法,我想知道函数@synchronized()是什么确实,因为我经常使用它,但不知道什么意思。

最佳答案

它声明了 critical section围绕代码块。在多线程代码中,@synchronized保证在任何给定时间只有一个线程可以在 block 中执行该代码。

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

编辑:添加一些 2011 年原始答案中没有的更多信息。
@synchronized指令 prevents multiple threads from entering any region of code that is protected by a @synchronized directive referring to the same object .传递给 @synchronized 的对象指令是用作“锁”的对象。如果使用不同的对象作为锁,则两个线程可以在同一个 protected 代码区域中,并且您还可以使用相同的对象作为锁来保护两个完全不同的代码区域。

另外,如果你碰巧通过了nil作为锁定对象,根本不会获得任何锁定。

关于objective-c - @synchronized() 作为 Objective-C 中的单例方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com