Решение задачи читателей-писателей с помощью барьера



1️⃣ Мы создаем concurrent очередь*



2️⃣ Добавляем барьер на запись



3️⃣ Добавляем синхронный вызов на чтение



Получается, что поставив барьер на запись, мы дожидаемся пока все задачи в очереди на запись выполнятся, и потом синхронно получаем данные к текущему ресурсу



Запомните, что global и serial очереди не лучший выбор для барьеров



1) Serial очередь ведет себя также, как и барьерная очередь. Поэтому особого импакта мы не заметим



2) С global очередями у нас меньше контроля и скорее всего мы не сможем синхронизовать данные



Лучший вариант (единственно верный) это кастомные concurrent очереди