Swift Async wartet auf alle Aufgaben in der AufgabengruppeIOS

Programmierung für iOS
Anonymous
 Swift Async wartet auf alle Aufgaben in der Aufgabengruppe

Post by Anonymous »

Ich verwende eine Aufgabengruppe, um wiederholte Aufrufe einer asynchronen Methode mit langer Laufzeit einzuschließen. Da möglicherweise viele Aufrufe dieser Methode ausgeführt werden müssen, besteht die Hoffnung, dass sie parallel ausgeführt werden. Am Ende des Tages habe ich regulären synchronen Code, der blockiert werden muss, bis alle diese Asyncs aufgerufen werden.
Das Seltsame ist, dass ich im Gegensatz zu anderen Beispielen von Aufgabengruppen, die ich gesehen habe, die Werte aus der Async-Throws-Methode tatsächlich nicht benötige. Sie führen Aktionen aus und schreiben sie auf die Festplatte.
Gibt es keine Möglichkeit, diesen Code zu bereinigen?

Code: Select all

let swiftAsyncSemaphore = DispatchSemaphore(value: 0)
let taskGroupTask = Task {
await withThrowingTaskGroup(of: ASRJob.self) { group in
for path in filePathsToWorkOn {
group.addTask {
return try await doHardWork(atPath: path)
}
}

do {
for try await _ in group {
// For now we do not store this information
}
} catch {
// For now we do not store the error
}
}
swiftAsyncSemaphore.signal()
}
swiftAsyncSemaphore.wait()
Die meisten Beispiele, die ich sehe, verwenden eine Zuordnungs-/Kombinationsfunktion am Ende der Gruppe, aber ich benötige die Daten nicht. Wie kann ich also einfach warten, bis alle fertig sind?
Kontext, wo dieser Code ausgeführt wird:
Dieser Code wird im main()-Block einer synchronen Operation (NSOperation) ausgeführt, die in eine OperationQueue geht. Der Block, der „wait“ aufruft, befindet sich also nicht in schnellem asynchronem Code. Das Ziel besteht darin, den Abschluss der Vorgänge zu blockieren, bis diese schnelle asynchrone Arbeit erledigt ist, in dem Wissen, dass sie möglicherweise sehr lange ausgeführt wird.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post