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?