作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我被要求在 swift 中实现一个线程安全的字典,我使用了常见的方法:
class MutableDictionary {
var dictionary: [String : Any] = [:]
var queue = DispatchQueue(label: "queue", attributes: .concurrent)
func object(for key: String) -> Any? {
queue.sync {
return dictionary[key]
}
}
func set(_ object: Any?, for key: String) {
queue.async(flags: .barrier) {
self.dictionary[key] = object
}
}
}
但是,接下来的问题是:
最佳答案
但是,serialQueue 一次只能执行一项任务。
2、假设你只用队列来读/写,显然它们的效果是一样的。如果你将另一种任务交给它,显然并发队列的成本更低,这才是真正的区别。
3、提交给async对象的地址会在你的对象是类的时候定义。当你给类成员一个新值时,你将有一个错误的地址,所以你无法访问它并且错误来了。您可以通过结构尝试.
4、引用答案1
。
5、有时候希望任务执行得更快,concurrentQueue优先。如果你想有序地执行任务,serialQueue 做的更好。
关于ios - 什么时候在 ios 中选择 serialQueue 而不是并发队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71850309/
我是一名优秀的程序员,十分优秀!