gpt4 book ai didi

objective-c - 如何用更高效的东西替换这个@synchronized(self) 代码?

转载 作者:可可西里 更新时间:2023-11-01 05:47:45 26 4
gpt4 key购买 nike

我有这个 getter/setter 对用于原子保留属性:

- (FileManager*)fileManager {
@synchronized(self) {
if (fileManager) {
return fileManager;
}

FileManager *fm = [[FileManager alloc] init];
self.fileManager = fm;
[fm release];

return fileManager;
}
}
- (void)setFileManager:(FileManager *)newFileManager {
@synchronized(self) {
[fileManager release];
fileManager = [newFileManager retain];
}
}

现在有人说@synchronized(self) 很慢而 NSLock 快很多。他还说,通常使用的魔术 @synthesize 实现不使用 @synchronize(self),而是使用效率更高的东西。

那么在这种情况下,这个伏都教魔法应该是什么样子的?

最佳答案

这篇文章的结论是 pthread_mutex 是最快的。它也有代码示例。

http://www.cocoadev.com/index.pl?NSLockVsSynchronized

但是,最重要的是让您在自己的应用中进行衡量。

另外,测量最简单的方法:@synthesize (atomic, retain) 属性。那当然会有最少的代码,并且当他们在编译器中优化它时您不必维护代码 - 您将免费获得他们的优化。

关于objective-c - 如何用更高效的东西替换这个@synchronized(self) 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784379/

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