我有一个经常从主线程或其他几个后台线程访问的代码块。我需要确保此代码一次只能处理一次。
我当前正在使用一个@synchronized(self) { }
块,但是不确定是否提供了正确的保护。它与NSLock
实例有何不同?
最后,有人可以建议我如何保护我的方法吗?该方法在我的应用程序委托中,并且我可以通过调用从各个线程访问它:
[[[UIApplication sharedApplication] delegate] myMethod];
非常感谢,
麦克风
Google Mac博客上有一篇很棒的博客文章,介绍了以下网站的内部工作@synchronized
:http :
//googlemac.blogspot.com/2006/10/synchronized-swimming.html
我目前正在使用@synchronized(self){}块,但是不确定是否提供了正确的保护。它与NSLock实例有何不同?
有几种同步关键部分的方法(@synchronized,NSLock,OSSpinLock等)。
我认为这@synchronized
是最方便(也是最慢)的方法。
这是一个很好的SO答案,它解释了@synchronized和NSLock之间的区别。
您正在通过共享实例(基本上是单例)委托访问您的方法。也许您可以重新考虑设计并找出一种方法,使您可以锁定其中的一小段代码myMethod
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句