如果需要太长时间,我想让用户能够停止排序程序。
我尝试使用 DispatchWorkItem.cancel。但是,这实际上并没有停止已经启动的进程。
let myArray = [String]() // potentially 230M elements!
...
workItem = DispatchWorkItem {
let result = myArray.sorted()
DispatchQueue.main.async {
print ("done")
}
}
// 如果进程太长,用户点击“取消” => workItem.cancel() // 不会停止排序
如何杀死 workItem 的线程?
我无权访问已排序的例程,因此我无法插入测试以检查当前线程是否处于“已取消”状态...