Рекомендуется ли блокировка в Python при обновлении логического значения в одном направлении в потоке, а затем при чтениPython

Программы на Python
Ответить
Anonymous
 Рекомендуется ли блокировка в Python при обновлении логического значения в одном направлении в потоке, а затем при чтени

Сообщение Anonymous »

Необходима ли блокировка в ситуации, когда поток 1 проверяет, периодически ли в цикле изменяется значение логического значения с False на True, при этом логическое значение обновляется в потоке 2?
Насколько я понимаю bool является атомарным в Python, не должно быть возможности, чтобы bool был неправильно обновлен или принял мусорное значение, как, например, в C++. Только один поток будет обновлять значение bool, и оно будет меняться только с False на True (нет положения, в котором он переключится обратно на False). Поскольку проверка выполняется периодически и время не имеет решающего значения, даже если поток 1 считывает старое значение (False), в то время как поток 2 обновляет его до True, поток 1 все равно должен иметь возможность прочитать новое значение, как только поток 2 завершит обработку следующая итерация цикла.
Это неправильное понимание данной конкретной ситуации? Я понимаю, что, как правило, лучше всего использовать блокировки, и я не против добавить их, но мне интересно, будет ли это на самом деле просто создавать больше потенциальных проблем (например, взаимоблокировок), не решая при этом никаких проблем, за исключением, возможно, сохранения потока 1 от зацикливания для одного больше итераций.
Это именно тот цикл, о котором идет речь. Две переменные обновляются в другом потоке и считываются в этом. Оба значения являются логическими, начиная с False и приобретая значение True после завершения других потоков.

Код: Выделить всё

           while True:
time.sleep(0.2)

if self.joined_queries:
self.stop()
break

if self.timeout:
self.stop()
break
Были и другие темы, но ответы были очень общими, без особых подробностей, и ситуация была немного иной. Я хотел бы понять, почему это плохая идея или нет!
Эта часть документации заставляет меня поверить, что это не проблема, но на самом деле это не так. уверен, правильно ли я это интерпретирую: http://www.python.org/doc/faq/library/# ... hread-safe

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-a-threa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»