Предполагая, что переменная не подвержена риску изменения во время чтения, существуют ли какие-либо неотъемлемые проблемы в переменной, считываемой двумя или более потоками одновременно?
Являются одновременным чтением переменной потокобезопасной?
Ответ 1
Если ваше предположение выполнено, то проблем нет.
Ответ 2
Нет, эта операция не является поистине безопасной потоком.
Несмотря на то, что в настоящее время переменная не записывается, предыдущие записи в переменную могут пока не отображаться для всех потоков. Это означает, что два потока могут считывать одно и то же значение и получать разные результаты, создавая условие гонки.
Это может быть предотвращено за счет наличия барьеров памяти, правильного использования летучих или нескольких других механизмов. Нам нужно будет узнать больше о вашей среде, в частности языке, чтобы дать полное объяснение.
Небольшое повторение вашего вопроса, хотя и дает лучший ответ. Предполагая, что больше нет записей, и все предыдущие записи видны текущему потоку, тогда да, чтение значения из нескольких потоков безопасно.
Ответ 3
Пока это простая переменная, у нее нет риска.
Если это свойство, его чтение может иметь побочные эффекты, поэтому не гарантируется безопасность потоков.
Ответ 4
Учитывая, что базы данных могут обычно использовать общие блокировки чтения, где любое количество клиентов может читать один и тот же блок, я бы предположил, что есть нет прямых неотъемлемых проблем.
Ответ 5
Да в трех символах.
Изменить: Упс. Да, это потокобезопасно. Нет, проблем нет. Обычно люди спрашивают, существует ли что-то потокобезопасное, а не если оно небезопасно.