gpt4 book ai didi

ios - @synchronized() 和 NSLock 的区别

转载 作者:IT王子 更新时间:2023-10-29 07:49:50 24 4
gpt4 key购买 nike

我有一段代码经常被主线程或其他几个后台线程访问。我需要确保一次只处理一个代码。

我目前正在使用 @synchronized(self) { } block ,但我不确定它是否提供了正确的保护。它与 NSLock 实例有何不同?

最后,有人可以建议我如何保护我的方法吗?该方法在我的应用程序委托(delegate)中,我通过调用从各种线程访问它:

[[[UIApplication sharedApplication] delegate] myMethod];

非常感谢,

迈克

最佳答案

Google Mac 博客上有一篇关于 @synchronized 内部工作原理的精彩博文:
http://googlemac.blogspot.com/2006/10/synchronized-swimming.html

I'm currently using a @synchronized(self) { } block but I'm not sure if that's providing the correct protection. How does it differ from an NSLock instance?

有几种方法可以同步关键部分 ( @synchronized, NSLock, OSSpinLock, ... )。
我认为 @synchronized 是最方便的 ( and also the slowest ) 方法。
Here is a good SO answer这解释了@synchronized 和 NSLock 之间的区别。

您正在通过共享实例(基本上是单例)委托(delegate)访问您的方法。也许您可以重新考虑您的设计并想出一种方法,让您可以在 myMethod 中锁定一小段代码。

关于ios - @synchronized() 和 NSLock 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776042/

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