@synchronized()和NSLock的区别

迈克尔瀑布

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

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

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

[[[UIApplication sharedApplication] delegate] myMethod];

非常感谢,

麦克风

托马斯·佐克林

Google Mac博客上有一篇很棒的博客文章,介绍了以下网站的内部工作@synchronizedhttp :
//googlemac.blogspot.com/2006/10/synchronized-swimming.html

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

有几种同步关键部分的方法(@synchronized,NSLock,OSSpinLock等)。
我认为这@synchronized是最方便(也是最慢)的方法。
这是一个很好的SO答案,它解释了@synchronized和NSLock之间的区别。

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

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章