为什么swift字典在并发时崩溃



下面是示例代码:

var dict = [Int: Int]()
for i in 0...100 {
DispatchQueue.global().async {
dict[i] = i
}
}

我知道快速收集是不安全的。但让我困惑的是它为什么会坠毁。键和值是值类型的Int

Xcode崩溃信息

Swift中的集合不是线程安全的。

它崩溃是因为.global()是一个并发队列,这意味着多个操作同时更改dict

让一个线程在另一个线程读写字典时修改字典是不安全的

最新更新