Macos 一致调度队列:com.apple.root.default-qos.overmit崩溃
有人有过诊断这些车祸的经验吗?我有一个用户一致地获取它们,尽管我发现了一篇与iOS相关的帖子,但我的应用程序并没有在同一类型的操作上崩溃…原因: 在iOS/tvOS中,存在队列/线程,每个线程都有自己的类型或优先级,也称为“服务质量”或简称“QOS”,这意味着cpu应处理此线程的紧急程度,可能是:Macos 一致调度队列:com.apple.root.default-qos.overmit崩溃,macos,cocoa,crash,Macos,Cocoa,Crash,有人有过诊断这些车祸的经验吗?我有一个用户一致地获取它们,尽管我发现了一篇与iOS相关的帖子,但我的应用程序并没有在同一类型的操作上崩溃…原因: 在iOS/tvOS中,存在队列/线程,每个线程都有自己的类型或优先级,也称为“服务质量”或简称“QOS”,这意味着cpu应处理此线程的紧急程度,可能是: QOS\u类\u默认值 QOS\u类\u用户\u已启动 QOS_类_实用程序 QOS_类_背景 QOS_类_未指定 QOS\u类\u用户\u交互 一旦您在同一队列中同时运行了太多任务,操作系统就会
- QOS\u类\u默认值
- QOS\u类\u用户\u已启动
- QOS_类_实用程序
- QOS_类_背景
- QOS_类_未指定
- QOS\u类\u用户\u交互
dispatch_async(dispatch_get_main_queue()) {
// some task to perform
print("This is my task")
}
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
// some task to perform
print("This is my task")
})
// some task to perform
print("This is my task")
要解决此问题(如果应用程序通知您已过度提交主队列),请将其更改为其他队列之一,如下所示:
dispatch_async(dispatch_get_main_queue()) {
// some task to perform
print("This is my task")
}
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
// some task to perform
print("This is my task")
})
// some task to perform
print("This is my task")
如果不需要后台(或并行)执行,甚至可以完全忽略dispatch_async命令,只需执行如下命令:
dispatch_async(dispatch_get_main_queue()) {
// some task to perform
print("This is my task")
}
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
// some task to perform
print("This is my task")
})
// some task to perform
print("This is my task")
在Swift 3中改写Shaybc的答案:
DispatchQueue.global(qos: .background).async {
// some task to perform
print("This is my task")
})
对于Swift 3使用:
DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
// ...
}
我发现,如果您多次尝试执行同步调度队列,就会发生这种情况。(同步调度_队列在工作时由多个线程调用。当队列执行块时,所有线程都在等待块完成。)“(如果应用程序通知您已过度提交主队列)”您如何知道这一点?