Python併發程式設計 執行緒鎖

2022-08-24 21:09:09 字數 1326 閱讀 7747

#多執行緒中雖然有gil,但是還是有可能產生資料不安全,故還需加鎖

from threading import lock, thread #互斥鎖

import time

def eat1(lock):

global n

lock.acquire()

temp =n

time.sleep(0.2)

n = temp - 1

lock.release()

if __name__ == '__main__':

n = 10

t_lst =

lock = lock()

for i in range(10):

t = thread(target=eat1,args=(lock,))

t.start()

for t in t_lst: t.join()

print(n)

from threading import rlock, thread #rlock遞迴鎖

import time

noddle_lock =fork_lock =rlock() #必須這麼寫,不能分開兩行

# fork_lock = rlock()

def eat1(name):

noddle_lock.acquire()

print('%s拿到麵條了'%name)

fork_lock.acquire()

print('%s拿到叉子了'%name)

print('%s吃麵了'%name)

fork_lock.release()

noddle_lock.release()

def eat2(name):

fork_lock.acquire()

print('%s拿到叉子了'%name)

time.sleep(1)

noddle_lock.acquire()

print('%s拿到麵條了'%name)

print('%s吃麵了'%name)

noddle_lock.release()

fork_lock.release()

thread(target=eat1,args=('alex',)).start()

thread(target=eat2,args=('egon',)).start()

thread(target=eat1,args=('bossjin',)).start()

thread(target=eat2,args=('nezha',)).start()

06 併發程式設計 執行緒和鎖

什麼是執行緒 程序 資源分配單位 執行緒 cpu執行單位 實體 每乙個py檔案中就是乙個程序,乙個程序中至少有乙個執行緒 執行緒的兩種建立方式 from multiprocessing import process deff1 n print n,號執行緒 if name main t1 threa...

python 使用多執行緒進行併發程式設計 互斥鎖的使用

import threading import time python的thread模組是比較底層的模組,python的threading模組是對thread做了一些包裝的,可以更加方便的被使用 多執行緒程式的執行順序是不確定的,當執行緒被阻塞 blocked 時,執行緒掛起,阻塞結束後,執行緒進入...

併發程式設計之執行緒的讀寫鎖

1.概念 2.讀寫鎖的狀態 3.讀寫鎖特性 4.讀寫鎖的適用場景 5.主要資料型別和應用函式 6.編碼舉例 讀寫鎖實際上是一種特殊的自旋鎖,它把共享資源的訪問劃分成讀者和寫者,讀者只能擁有對共享資源的讀許可權,寫者則需要對共享資源進行寫操作。讀寫鎖並不是兩把鎖,它是乙個名字叫做讀寫鎖的鎖,可以擁有讀...