DeferredFilesystemLockのTwisted API ではdeferUntilLocked
、同時使用は安全ではないと述べられています。
ファイルロックを誤用しないようにするために、どのように安全ではないのか、何が安全でないのかを理解したいと思います。
DeferredFilesystemLockのTwisted API ではdeferUntilLocked
、同時使用は安全ではないと述べられています。
ファイルロックを誤用しないようにするために、どのように安全ではないのか、何が安全でないのかを理解したいと思います。
おそらく、このメソッドは実際には同時使用に対して非常に安全です。実装の最初の 4 行を読むと、同時使用を試みるとすぐに が発生することが明らかですAlreadyTryingToLockError
。
ただし、おそらくこの警告は、有用なロック動作ではなく、例外が発生することを知らせるためのものです。
その例外の実装は、同時使用が許可されていない理由についてのヒントを提供する必要があります。 DeferredFilesystemLock
で始まるいくつかのインスタンス属性を使用して_tryLockCall
、ロックを取得しようとする進行状況を追跡します。同時試行が許可されている場合は、この属性 (およびその他) の使用が相互に踏みにじられます。
これは比較的簡単に拡張できます。必要なのは、(DeferredFilesystemLock
インスタンスではなく) 試行ごとに割り当てられた新しいオブジェクトのロック試行に関連付けられた状態を維持することだけです。 または、DeferredLock
助けることができます。