Скажем, я программирую в инфраструктуре потоков, которая не имеет мультезы с несколькими читателями/одиночными писателями. Могу ли я реализовать их функциональные возможности со следующим:
Создайте два мьютекса: рекурсивный (блокировка) для чтения и двоичный для писателя.
Запись:
- получить блокировку двоичных мьютексов
- до тех пор, пока рекурсивный мьютекс не будет блокировать число 0
- фактическая запись
- блокировка блокировки двоичных мьютексов
Чтение:
- получить блокировку двоичных мьютексов (поэтому я знаю, что сценарий неактивен)
- количество приращений рекурсивного мьютекса
- блокировка блокировки двоичных мьютексов
- актуальное чтение
- количество декрементов рекурсивного мьютекса
Это не домашнее задание. У меня нет формального обучения в параллельном программировании, и я пытаюсь понять проблемы. Если кто-то может указать на недостаток, изложить инварианты или обеспечить лучший алгоритм, я был бы очень доволен. Также будет оценена хорошая рекомендация, будь то онлайн или мертвые деревья.