Advertisement
Toxotsist

btbtbt

Oct 2nd, 2023
983
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.36 KB | Cybersecurity | 0 0
  1. import threading
  2. import time
  3.  
  4. mutex = threading.Lock()
  5. sum = 0
  6. sum2 = 0
  7.  
  8. def safe_race_thread1():
  9.     global sum
  10.     for i in range(0,1000):
  11.         mutex.acquire()
  12.         tmp = sum
  13.         time.sleep(0)
  14.         tmp += i
  15.         time.sleep(0)
  16.         sum = tmp
  17.         mutex.release()
  18.  
  19. def safe_race_thread2():
  20.     global sum
  21.     for i in range(1, 1000):
  22.         mutex.acquire()
  23.         tmp = sum
  24.         time.sleep(0)
  25.         tmp -= i
  26.         time.sleep(0)
  27.         sum = tmp
  28.         mutex.release()
  29.  
  30. def unsafe_race_thread1():
  31.     global sum2
  32.     for i in range(0, 1000):
  33.         tmp = sum2
  34.         time.sleep(0)
  35.         tmp += i
  36.         time.sleep(0)
  37.         sum2 = tmp
  38.  
  39. def unsafe_race_thread2():
  40.     global sum2
  41.     for i in range(1, 1000):
  42.         tmp = sum2
  43.         time.sleep(0)
  44.         tmp -= i
  45.         time.sleep(0)
  46.         sum2 = tmp
  47.  
  48. thread1 = threading.Thread(target = safe_race_thread1)
  49. thread2 = threading.Thread(target = safe_race_thread2)
  50. thread3 = threading.Thread(target = unsafe_race_thread1)
  51. thread4 = threading.Thread(target = unsafe_race_thread2)
  52. thread1.start()
  53. thread2.start()
  54. thread3.start()
  55. thread4.start()
  56. thread1.join()
  57. thread2.join()
  58. thread3.join()
  59. thread4.join()
  60. print ("Результат при работе с блокировкой", sum)
  61. print ("Результат без блокировки", sum2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement