¿Cómo implementar un mecanismo de bloqueo reentrante a través de la cola concurrente de envío (GCD)?

Acabo de leeresta publicación, y su solución parece convincente:

La cola serial se usa para sincronizar el accesodispatch_get_specific / dispatch_set_specific se utiliza para proporcionar la capacidad de reentrada.

Lo que me interesa es si es posible avanzar este esquema para implementar un mecanismo de bloqueo reentrante paracola de despacho concurrente (cada lectura se realiza utilizando dispatch_sync, la escritura se realiza utilizando dispatch_barrier_async, como se describeaquí, vea "Un recurso, varios lectores y un solo escritor").

PD Creo que he logrado implementar esto usando[NSThread currentThread].threadDictionary aquí, pero no me gusta tratar con[NSThread currentThread] Desde que confío en GCD. ¿Es posible reemplazar el uso de[NSThread currentThread].threadDictionary con algo complicadodispatch_set_specific/dispatch_get_specific ¿código?