The DispatchQueue.sync method has this nice property that it automatically returns whatever value you return from the dispatched block. This allows you to write something like the following: let v = queue.sync { return ... // computation that has to be run on queue } This is much more elegant than having to declare an optional result variable before the call to sync, capturing and assigning to the