【发布时间】:2013-11-25 19:02:25
【问题描述】:
我刚刚阅读了this post,它的解决方案似乎很有说服力:
- 串行队列用于同步访问
- dispatch_get_specific/dispatch_set_specific 用于提供重入能力。
我感兴趣的是是否有可能推进该方案以实现并发调度队列的重入锁定机制(每次读取使用dispatch_sync完成,写入使用dispatch_barrier_async完成,如所述here, see "One Resource, Multiple Readers, and a Single Writer")。
附:我想我已经设法使用[NSThread currentThread].threadDictionaryhere 实现了这一点,但我不喜欢处理[NSThread currentThread],因为我依赖GCD。是否可以用一些棘手的dispatch_set_specific/dispatch_get_specific 代码替换[NSThread currentThread].threadDictionary 的用法?
【问题讨论】:
-
这篇文章有点老了,但是你有什么理由不能只使用 dispatch_get_specific 来做你想做的事情吗?如果你创建一个并发调度队列(而不是使用全局队列),你不会做同样的事情吗?
-
@JPC,看来你是对的。描述我的错误的时间太长(为什么我觉得这是一个不同的情况)......请随意将您的评论格式化为答案,我会接受它是正确的。
-
顺便谢谢你!我现在可以重新访问我的原始代码并消除所有这些 [NSThread currentThread] 的东西。
标签: objective-c grand-central-dispatch