Core data 由于cpu时间超过限制,coreData后台线程被终止

Core data 由于cpu时间超过限制,coreData后台线程被终止,core-data,background-process,watchos,cpu-time,Core Data,Background Process,Watchos,Cpu Time,My watch extension使用以下代码(简称)在后台线程中从coreData获取许多项目: 显然,这需要太长时间 我的问题: coreData后台线程有时间限制吗 如果是这样,我如何修改代码以避免它 coreDataSerialQueue.async { backgroundManagedContext.performAndWait { … let buyItemFetchRequest: NSFetchReque

My watch extension使用以下代码(简称)在后台线程中从coreData获取许多项目:

显然,这需要太长时间

我的问题:

  • coreData后台线程有时间限制吗
  • 如果是这样,我如何修改代码以避免它
        coreDataSerialQueue.async {
            backgroundManagedContext.performAndWait {
                …
                let buyItemFetchRequest: NSFetchRequest<CDBuyItem> = CDBuyItem.fetchRequest()
                …
                do {
                    let cdShoppingItems: [CDBuyItem] = try backgroundManagedContext.fetch(buyItemFetchRequest)
                    …
                    return
                } catch let error as NSError {
                    …
                    return
                }
            }
        }
    
    Event:            cpu usage
    Action taken:     Process killed
    CPU:              2 seconds cpu time over 4 seconds (59% cpu average), exceeding limit of 14% cpu over 15 seconds
    CPU limit:        2s
    Limit duration:   15s
    CPU used:         2s
    CPU duration:     4s
    Duration:         3.57s
    Duration Sampled: 0.00s
    Steps:            1