私はナンセンスな話はしません、ただコードを見てください!
import threading
import time
def a():while True:
lockb.acquire()print('a')
locka.release()
time.sleep(0.5)
def b():while True:
locka.acquire()print('b')
lockb.release()
time.sleep(0.5)if __name__ =="__main__":
locka = threading.Lock()
lockb = threading.Lock()
ta = threading.Thread(None, a)
tb = threading.Thread(None, b)
locka.acquire() #aが最初に実行されることを確認します
ta.start()
tb.start()
実行後に相手のロックを取得し、自分のロックを解除します
補足知識:スレッドの同期-2つのスレッドが交代でpython実装を実行します
コードを見てください!
import threading
import time
lockA=threading.Lock()
lockB=threading.Lock()
def printA(n):if n<0:return
lockA.acquire()print("+++")
lockB.release()
time.sleep(0.1)printA(n-1)
def printB(n):if n<0:return
lockB.acquire()print("***")
lockA.release()
time.sleep(0.2)printB(n-1)
lockB.acquire()
t1=threading.Thread(target=printA,args=(10,))
t2=threading.Thread(target=printB,args=(10,))
t1.start()
t2.start()
t1.join()
t2.join()
インターンシップを探しているので、オペレーティングシステムをもう一度覚えておく必要があります。
アイデア:2つのロックlockAとlockBを作成します。実行するたびに、自分のロックをロックし、相手のロックを解除します。
最初に、Aが最初に実行されると、Aのロックが解放され、Bのロックがロックされます。
上記の2つのスレッドの交互実行のpython実装は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。
Recommended Posts