`sCode`
import threading
# RLockオブジェクトの作成
rlock = threading.RLock()
def recursive_func(n):
with rlock:
if n > 0:
print(f”Lock acquired by {threading.current_thread().name}, n = {n}”)
recursive_func(n – 1)
print(f”Lock released by {threading.current_thread().name}, n = {n}”)
thread = threading.Thread(target=recursive_func, args=(5,))
thread.start()
thread.join()
`sCode`
# 複数のスレッドで同一リソースを管理する例
shared_resource = 0
def manage_resource(n):
global shared_resource
with rlock:
temp = shared_resource
shared_resource = temp + n
print(f”Resource updated by {threading.current_thread().name}, value = {shared_resource}”)
# スレッドの生成と開始
threads = []
for i in range(5):
thread = threading.Thread(target=manage_resource, args=(i,))
threads.append(thread)
thread.start()
# スレッドの終了を待つ
for thread in threads:
thread.join()
コメント