本质上,我在 a 中有一组数据NSDictionary
,但为了方便起见,我设置了一些NSArray
s,其中数据以几种不同的方式排序和过滤。数据将通过不同的线程(块)进入,我想确保一次只有一个块修改我的数据存储。
今天下午我遇到了设置调度队列的麻烦,然后偶然发现了一篇关于@synchronized
这件事的帖子,这看起来就像我想做的事情。
所以我现在拥有的是...
// a property on my object
@property (assign) dispatch_queue_t matchSortingQueue;
// in my object init
_sortingQueue = dispatch_queue_create("com.asdf.matchSortingQueue", NULL);
// then later...
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
dispatch_async(_sortingQueue, ^{
// do stuff...
});
}
我的问题是,我可以用以下内容替换所有这些吗?
- (void)sortArrayIntoLocalStore:(NSArray*)matches
{
@synchronized (self) {
// do stuff...
};
}
......无论如何,两者之间有什么区别?我应该考虑什么?