7.3.4.1 - 并发多线程 互斥锁

互斥锁

把并行变成串行,保证顺序,降低效率。

from threading import Thread, Lock
import time

n = 100

def task():
    global n
    mutex.acquire()
    tmp = n
    time.sleep(0.1)
    n = tmp - 1
    print(n)
    mutex.release()

if __name__ == "__main__":
    mutex = Lock()
    t_l = []
    for i in range(100):
        t = Thread(target=task)
        t_l.append(t)
        t.start()

    for i in t_l:
        t.join()

    print("",n)
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
主 0
运行结果

 

posted @ 2018-03-06 21:52  Love_always_online  阅读(114)  评论(0编辑  收藏  举报