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?