Avatar
omochimetaru 6/23/2019 5:05 PM
var a = Array(repeating: 0, count: 10) let q = DispatchQueue(label: "array") let group = DispatchGroup() group.enter() for _i in a.indices { let i = _i DispatchQueue.global().async { q.sync { a[i] = i } group.leave() // EXC_BAD_INSTRUCTION } } group.wait() print(a) // [0, 1, ..., 9] と出て欲しい
5:06 PM
↑対応としてはこうやってArrayへのアクセスを直列化するキューを別にもつのが多分簡単です タスクそれ自体は並列化してるので効果はでるはずです。
5:06 PM
(あとforのiをキャプチャするのが怖かったのでいったん_iに置いてみました