0
0 комментариев

Версия Python 3.5, использую модуль threading. Нужна ли синхронизация, когда потоки изменяют общую глобальную переменную в один момент времени? В книгах пишут, что нужно использовать Lock(), но и без него не возникает не каких проблем. Пример кода из книги:

import threading, time
 
 
count = 0
 
 
def adder():
    global count
    count += 1
    time.sleep(0.5)
    count += 1
 
threads = []
for i in range(100):
    thread = threading.Thread(target=adder, args=())
    thread.start()
    threads.append(thread)
 
 
for thread in threads:
    thread.join()
 
print(count)

Вот здесь, судя по книге, должно каждый раз выдавать разные числа, так как одновременно 100 потоков в один момент времени меняют переменную count. Но почему-то всё нормально срабатывает. Это в какой-то версии было исправлено или как? Объясните, кто знает.

Изменен статус публикации
Добавить комментарий