@同步或串行调度队列[重复]

问题描述 投票:2回答:1
@synchronized块上使用串行分派队列(假设

high或default优先级时)是否会提高性能,以串行化对资源的访问。增益是指由于同步机制本身而导致的开销差异。

objective-c grand-central-dispatch foundation
1个回答
3
投票
当然。但是在语义上也存在差异。 @synchronized块在边表中使用递归的,异常安全的互斥量。所有这些属性导致一些额外的开销。 dispatch_queue_t的重量极轻(尤其是在使用dispatch _ * _ f以避免Block_copy()时),但它是非递归的,不处理异常,也不保证特定线程。

就我个人而言,我认为递归锁不是一个好主意,在Cocoa应用程序中确实不应捕获异常,因此@synchronized几乎没有吸引力。

未来的编辑:较新的os_unfair_lock的开销甚至比任何一个都低得多

© www.soinside.com 2019 - 2024. All rights reserved.