Rob*_*ker 2 grand-central-dispatch ios
我正在处理一些我无法联系原始开发人员的代码.
他将一个类的引用传递给另一个类的串行调度队列,我没有看到任何目的,不只是创建另一个调度队列(每个类都是一个单例).
这不是创造问题,但我想进一步理解,所以对正面影响的任何见解都表示赞赏,谢谢.
编辑:我建议在这里阅读所有答案,他们解释了很多.
以这种方式共享队列实际上并不是一个好主意(不,不是因为它们很昂贵 - 它们不是,反之亦然).理由是除了队列的创建者以外,任何人都不清楚队列的语义是什么.它是连续的吗?同时?高度优先?低优先级?所有这些都是可能的,一旦你开始传递为了特定类的利益而实际创建的内部队列,外部调用者可以在其上安排工作,这会导致相互死锁或以其他项目的意外行为队列,因为调用者A知道期望并发行为,并且调用者B认为它是一个串行队列,没有任何并发执行所暗示的"陷阱".
因此,队列应尽可能隐藏类的实现细节.该类可以根据需要导出用于针对其内部队列调度工作的方法,但这些方法应该是唯一的访问者,因为他们是唯一知道如何最好地访问和安排特定类型队列工作的人!
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |