ReentrantReadWriteLock
ドキュメントでは次のように述べられています。
writer can acquire the read lock, but not vice-versa
私が正しく理解していれば、同じスレッドから実行できることを意味します:
//thread1
lock.writeLock().lock()
lock.readLock().lock()
print("this line executes")
これは理にかなっています。すでにロックされている場合write
、他のスレッドはロックされたコードに入ることができません。しかし、 をロックした場合、他のスレッドがロックを作成していない場合、同じスレッドでブロックにread
入ることができないのはなぜですか? したがって、これは機能しません:write
read
//thread1
lock.readLock().lock()
lock.writeLock().lock()
print("this line doesn't execute")
同じスレッドでロックするread
前にロックを解除する必要があるのはなぜですか?write