【发布时间】:2019-09-18 03:12:09
【问题描述】:
我想让用户能够在排序程序耗时过长时停止它。
我尝试使用 DispatchWorkItem.cancel。但是,这实际上并不会停止已经启动的进程。
let myArray = [String]() // potentially 230M elements!
...
workItem = DispatchWorkItem {
let result = myArray.sorted()
DispatchQueue.main.async {
print ("done")
}
}
//如果进程太长,用户点击“取消”=> workItem.cancel() // 不停止排序
如何杀死 workItem 的线程?
我无权访问已排序的例程,因此我无法插入测试以检查当前线程是否处于“已取消”状态...
【问题讨论】:
标签: multithreading sorting grand-central-dispatch dispatchworkitem