この記事では、Pythonでの`RLock`(Reentrant Lock)による再帰ロックの実装について詳しく解説します。具体的なコード例とその解説、応用例を含めています。
再帰ロック(RLock)とは?
再帰ロック(RLock)とは、同一スレッド内で複数回ロックを取得できる仕組みです。Pythonの`threading`モジュールには、この再帰ロックを実装するための`RLock`クラスが含まれています。通常のロック(Lock)では、既にロックが取得されている状態で再度ロックを取得しようとするとデッドロックが発生しますが、`RLock`を使うことでこの問題を回避できます。
RLockの基本的な使い方
`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()
コメント