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:使用通知尚未解決您的問題? –