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