Я пишу программу, где есть объект, разделяемый несколькими потоками:
- A) Несколько потоков записи записываются в объект (все работают одинаково функция)
- B) Чтение потока, который обращается к объекту каждые 5 секунд.
- C) Считываемый поток, который обращается к объекту, представляет собой запрос пользователя
Очевидно, необходимо заблокировать объект при записи на него, поскольку мы не хотим, чтобы несколько потоков записывали объект одновременно.
Мои вопросы:
- Нужно ли также блокировать объект при чтении с него?
- Правильно ли я думаю, что если мы просто блокируем объект при записи, достаточно критического раздела; но если мы блокируем объект при чтении или записи, необходим мьютекс?
Я задаю этот вопрос, потому что в Microsoft Office невозможно, чтобы два экземпляра Word могли получить доступ к документу в режиме доступа для чтения/записи; но пока документ открывается в режиме чтения/записи, можно открыть другой экземпляр Word для доступа к документу в режиме только для чтения. Будет ли такая же логика применяться при потоковой передаче?