"""
Atomic Operation:That can't be interrupted at middle
e.g. print before we remove the thread from queue
"""
from threading import Thread
import time
import random
counter=0
def Incresment_Conuter():
global counter
time.sleep(random.randint(1, 10))
counter+=1
time.sleep(random.randint(1, 10))
print(f'Now Counter Value is {counter}')
print("------------------")
threadList=[]
for x in range(10):
t=Thread(target=Incresment_Conuter)
time.sleep(random.randint(1, 10))
t.start()
threadList.append(t)
print("Thread Started")
"""
Here each time a new thread will be started
"""
for thread in threadList:
thread.join()
"""
Here the thing are happening so fast that it looks like the method is calling sequencely
So see the actual behaviour we need to add some delay using time.sleep() this is called fuzzing in multithreading
as it help us to see the problem
"""