擅长:python、mysql、java
<p>可以说,这种方法对于并发使用实际上是相当安全的。如果您阅读<a href="https://twistedmatrix.com/trac/browser/tags/releases/twisted-13.1.0/twisted/internet/defer.py#L1541" rel="nofollow noreferrer">the first four lines of the implementation</a>,那么很明显,并发使用的尝试将立即引发<code>AlreadyTryingToLockError</code>。在</p>
<p>也许这个警告是为了告诉您,您将得到一个异常,而不是有用的锁定行为。在</p>
<p>该异常的实现应该提供一个提示,说明为什么不允许并发使用。<code>DeferredFilesystemLock</code>使用一些实例属性,从<code>_tryLockCall</code>开始,跟踪获取锁的过程。如果允许并发尝试,它们将彼此践踏该属性(以及其他属性)的使用。在</p>
<p>这可以相对容易地得到加强。所有需要做的就是保持与每次尝试分配的新对象的锁尝试相关联的状态(而不是在<code>DeferredFilesystemLock</code>实例上)。<a href="https://stackoverflow.com/questions/18990697/python-twisteds-deferredlock/18993262#18993262">Or, ^{<cd5>} could help.</a></p>