dispatch_barrier_[a]sync are meant to be used with a concurrent queue. They are also meant to be used along with calls to
The common usage is the "multi-readers, one writer" pattern. You setup a concurrent queue. For "reader" blocks, you use
dispatch_[a]sync. For "writer" blocks, you use
This setup allows concurrent reading but only allows one writer at a time and no reading while the writing is happening.
Compare this with a serial queue where only one block at a time can ever happen.