gpt4 book ai didi

iphone - 在这种情况下,@synchronize 是否可以防止竞争条件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:20:55 24 4
gpt4 key购买 nike

我想在后台线程和 NSOperationQueue 中使用 Core Data。现在我想为什么我不应该只创建一个类来保存所有具有 NSManagedObjectContext 属性的核心数据堆栈事物,然后将这个属性设为原子属性?

关于 @synchronize(self) {...} 我不确定的一件事是:假设我有一个被认为是线程安全的属性:

@property (retain) NSManagedObjectContext *moc;

每个 NSOperation 或线程访问具有此 moc 属性的 CoreDataTools 类。他们像这样访问这个 moc 属性:

// Assume: Inside an NSOperation or new thread here...
NSManagedObjectContext *moc = [[CoreDataTools sharedInstance] moc];

// Do a lot of things with moc. Add and remove 20 objects.

这会有效吗?我不明白这个锁什么时候有效。只是在实际访问该属性的情况下?还是我可以安全地使用 NSManagedObjectContext 实例,直到后台线程的 NSOperation 或调用方法完成并返回?

我知道 NSMangagedObjectContext 有一个 -lock 方法。我想大致了解这是否可行。

最佳答案

 @synchronized(self) { /* lock is effective inside here only */ } 

关于iphone - 在这种情况下,@synchronize 是否可以防止竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202137/

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