0
我在CoreData并发性方面遇到了一些问题。 我不能做context.perform
而目标线程被阻止DispatchGroup
。Swift:与DispatchGroup的死锁
举个简单的例子说明这个问题:
func upload(objects: [NSManagedObject]) {
let group = DispatchGroup()
for object in objects {
group.enter()
upload(object) {
group.leave()
}
}
group.wait() // current thread is blocked here
someAdditionalWorkToDoInSameThread()
}
func upload(object: NSManagedObject, completion:()->()) {
let context = object.managedObjectContext
performAlamofireRequest(object) {
context.perform {
// can't reach here because the thread is blocked
update(object)
completion()
}
}
}
请帮我正确地重新实现这一点。谢谢。
这应该这样做;)顺便说一下,他原来的'update'函数在清晰的同步函数中使用了一个不必要的*完成块*。对我来说没有多大意义... –
我更新了我的第一个功能,使其具有一定的意义。 –
@AndriyTrubchanin:使用通知尚未解决您的问题? –