码迷,mamicode.com
首页 > 其他好文 > 详细

Thread Based Parallelism - Thread Synchronization With Lock

时间:2018-02-09 20:28:48      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:share   manage   threading   print   存在   __name__   ==   sync   ati   

 1 Thread Based Parallelism - Thread Synchronization With Lock
 2 
 3     import threading
 4 
 5     shared_resource_with_lock = 0
 6     shared_resource_with_no_lock = 0
 7     COUNT = 100000
 8     shared_resource_lock = threading.Lock()
 9 
10 
11     ####LOCK MANAGEMENT##
12     def increment_with_lock():
13         global shared_resource_with_lock
14         for i in range(COUNT):
15             shared_resource_lock.acquire()
16             shared_resource_with_lock += 1
17             shared_resource_lock.release()
18 
19 
20     def decrement_with_lock():
21         global shared_resource_with_lock
22         for i in range(COUNT):
23             shared_resource_lock.acquire()
24             shared_resource_with_lock -= 1
25             shared_resource_lock.release()
26 
27 
28     ####NO LOCK MANAGEMENT ##
29     def increment_without_lock():
30         global shared_resource_with_no_lock
31         for i in range(COUNT):
32             shared_resource_with_no_lock += 1
33 
34 
35     def decrement_without_lock():
36         global shared_resource_with_no_lock
37         for i in range(COUNT):
38             shared_resource_with_no_lock -= 1
39 
40 
41     ####the Main program
42     if __name__ == "__main__":
43         t1 = threading.Thread(target=increment_with_lock)
44         t2 = threading.Thread(target=decrement_with_lock)
45         t3 = threading.Thread(target=increment_without_lock)
46         t4 = threading.Thread(target=decrement_without_lock)
47         t1.start()
48         t2.start()
49         t3.start()
50         t4.start()
51         t1.join()
52         t2.join()
53         t3.join()
54         t4.join()
55         print("the value of shared variable with lock management is %s" 56               % shared_resource_with_lock)
57         print("the value of shared variable with race condition is %s" 58               % shared_resource_with_no_lock)
59 
60     Output,
61         the value of shared variable with lock management is 0 
        # 会发现
shared_resource_with_lock 恒定为 0;
        # 因为 lock 的存在, increment 的数值等于 decrement 的数值.
62      the value of shared variable with race condition is -9657
        # shared_resource_with_no_lock 会为一个随机, 有时候也为 0.

 

Thread Based Parallelism - Thread Synchronization With Lock

标签:share   manage   threading   print   存在   __name__   ==   sync   ati   

原文地址:https://www.cnblogs.com/zzyzz/p/8436451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!