Hi, I’d like to propose a change to the new GCD API; that DispatchWorkItems be retained by their groups (and in turn, for them to be retained by their queues). This allows for whoever created the work item to create a weak reference to it, as an indicator for whether or not it has finished executing.
For example, let’s say I have some kind of class which manages a library of files. I want to have a refresh operation which runs on a background queue, enumerating the documents and perhaps even opening them and extracting some metadata: class DocumentLibrary { weak var refreshOperation : DispatchWorkItem? func refresh(force:Bool = false) { If let ongoingOperation = refreshOperation { if force == true { ongoingOperation.cancel() // force an update } else { return // already refreshing } } refreshOperation = DispatchWorkItem(….) // processes the files, returns the results on the main queue DispatchQueue.global().async(refreshOperation) } } This relies on the fact that weak references are thread-safe, and avoids the need for an explicit completion handler which nils the variable. Thoughts? Karl _______________________________________________ swift-corelibs-dev mailing list swift-corelibs-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-corelibs-dev