python 多线程-01 锁

import threading

# lock = threading.RLock()

# RLock 递归锁
lock = threading.RLock()  
Counter = [0]


def add(C):
    lock.acquire()
    C[0] = C[0] + 1
    lock.release()


if __name__ == '__main__':
    count = 0
    threads = []
    for i in range(10):
        t = threading.Thread(target=add, args=[Counter])
        threads.append(t)

    for t in threads:
        t.start()
        t.join()

    print(Counter)
import threading

lock = threading.Condition()

Counter = [0]


def add(C):
    lock.acquire()
    lock.wait()  

    C[0] = C[0] + 1
    print(C[0])
    lock.release()


if __name__ == '__main__':
    threads = []
    for i in range(10):
        t = threading.Thread(target=add, args=[Counter])
        threads.append(t)

    for t in threads:
        t.start()

    while True:
        inp = int(input("\n>>>"))
        lock.acquire()
        lock.notify(inp)
        lock.release()
import threading

lock = threading.Event()

Counter = [0]


def add(C):
    lock.wait()

    C[0] = C[0] + 1
    print(C[0])


if __name__ == '__main__':
    threads = []
    for i in range(10):
        t = threading.Thread(target=add, args=[Counter])
        threads.append(t)

    for t in threads:
        t.start()

    inp = int(input("\n>>>"))
    # 解锁
    lock.set()

    # 加锁
    lock.clear()
    inp = int(input("\n>>>"))
    # 解锁
    lock.set()

    threads = []
    for i in range(10):
        t = threading.Thread(target=add, args=[Counter])
        threads.append(t)

    for t in threads:
        t.start()

posted @ 2020-03-09 14:55  hurz  阅读(119)  评论(0编辑  收藏  举报