Jak zaimplementować mechanizm blokowania reentrant poprzez kolejkę dyspozycyjną wysyłki (GCD)?

właśnie przeczytałamten post, a jego rozwiązanie wydaje się przekonujące:

Kolejka szeregowa służy do synchronizacji dostępudispatch_get_specific / dispatch_set_specific służy do zapewnienia możliwości ponownego wejścia.

Interesuje mnie to, czy możliwe jest rozwinięcie tego schematu, aby zaimplementować mechanizm blokujący reentrantkolejka jednoczesnych wysyłek (każdy odczyt odbywa się za pomocą dispatch_sync, zapis odbywa się za pomocą dispatch_barrier_async, jak opisanotutaj zobacz „Jeden zasób, wielu czytelników i pojedynczy pisarz”).

P.S. Myślę, że udało mi się zaimplementować to użycie[NSThread currentThread].threadDictionary tutaj, ale nie lubię zajmować się[NSThread currentThread] odkąd polegam na GCD. Czy można zastąpić użycie[NSThread currentThread].threadDictionary z niektórymi trudnymidispatch_set_specific/dispatch_get_specific kod?

questionAnswers(1)

yourAnswerToTheQuestion