Разумно ли получать доступ к данным только для чтения из нескольких потоков одновременно? - PullRequest
16 голосов
/ 13 апреля 2011

У меня есть приложение, которое я пытаюсь сделать многопоточным. Каждый поток получит доступ к большому фрагменту данных только для чтения.

Это нормально, если несколько потоков обращаются к данным одновременно? Я знаю, что если бы данные не были доступны только для чтения, мне нужно было бы использовать мьютексы или какую-то другую форму синхронизации для предотвращения состояния гонки. Но мне интересно, нормально ли это читать данные без учета синхронизации.

Данные не будут изменены в течение всех потоков. Приложение будет работать в Linux и Windows и написано на C ++, если это что-то меняет.

Ответы [ 4 ]

19 голосов
/ 13 апреля 2011

Если данные доступны только для чтения на протяжении всего времени жизни всех потоков, которые их читают, то да, чтение без ошибок вполне нормально.

11 голосов
/ 13 апреля 2011

Если данные действительно доступны только для чтения в течение многопоточного доступа, синхронизация не требуется.

3 голосов
/ 13 апреля 2011

Если данные исправлены до начала какого-либо потока чтения, тогда да, все в порядке.

3 голосов
/ 13 апреля 2011

Да, все в порядке.

У вас не должно быть проблем.

...