Como implementar um mecanismo de bloqueio reentrante através do despacho de fila concorrente (GCD)?

eu acabei de leresta postageme sua solução parece convincente:

Fila serial é usada para sincronizar o acessodispatch_get_specific / dispatch_set_specific é usado para fornecer capacidade de reentrada.

O que me interessa é se é possível avançar com este esquema para implementar um mecanismo de bloqueio reentrante parafila de expedição simultânea (cada leitura é feita usando dispatch_sync, a gravação é feita usando dispatch_barrier_async, como descritoaqui, consulte "Um recurso, vários leitores e um único gravador").

P.S. Acho que consegui implementar isso usando[NSThread currentThread].threadDictionary Aqui, mas eu não gosto de lidar com[NSThread currentThread] desde que eu confie no GCD. É possível substituir o uso de[NSThread currentThread].threadDictionary com algum truquedispatch_set_specific/dispatch_get_specific código?

questionAnswers(1)

yourAnswerToTheQuestion