Como parar um DispatchWorkItem no GCD?
Atualmente, estou brincando comGrand Central Dispatch e descobriu uma classe chamadaDispatchWorkItem
. A documentação parece um pouco incompleta, então não tenho certeza sobre como usá-la da maneira certa. Criei o seguinte trecho e esperava algo diferente. Eu esperava que o item fosse cancelado depois de ligarcancel
nele. Mas a iteração continua por algum motivo. Alguma idéia do que estou fazendo de errado? O código parece bom para mim.
@IBAction func testDispatchItems() {
let queue = DispatchQueue.global(attributes:.qosUserInitiated)
let item = DispatchWorkItem { [weak self] in
for i in 0...10000000 {
print(i)
self?.heavyWork()
}
}
queue.async(execute: item)
queue.after(walltime: .now() + 2) {
item.cancel()
}
}