I’ve been experimenting with Dispatch, and workloops in particular. I gather that they’re similar to serial queues, except that they reorder work items by QoS. I suspect there’s more to workloops than meets the eye, though; calling dispatch_set_target_queue
on them has no effect, in spite of the <dispatch/workloop.h>
saying that workloops “can be passed to all APIs accepting a dispatch queue, except for functions from the dispatch_sync()
family”.
Workloops keep showing up in odd places like Metal and Network.framework backtraces, and <dispatch/workloop.h>
includes functionality for tying workloops to os_workgroup
s (?!).
What exactly is a workloop beyond just a serial queue with priority ordering, and why can’t I set the target queue of one?