مثال حلشده
پیشرفته شمارندهٔ همروند
صورت مسئله
چرا بدون قفل نتیجه کمتر از ۴۰۰۰۰ و هر بار متفاوت است؟
راهحل گامبهگام
۴ گام باقی مانده
import threading
counter = 0
lock = threading.Lock()
def worker(n):
global counter
for _ in range(n):
with lock:
counter += 1
threads = [threading.Thread(target=worker, args=(10_000,)) for _ in range(4)]
for t in threads: t.start()
for t in threads: t.join()
print(counter) # 40000