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