在 Twisted API for DeferredFilesystemLock ,说明 deferUntilLocked
并发使用不安全。
我想了解它在哪些方面不安全以及是什么导致它不安全,以确保我不会滥用文件锁。
最佳答案
可以说,该方法对于并发使用来说实际上是相当安全的。如果您阅读the first four lines of the implementation那么很明显,尝试并发使用将立即引发 AlreadyTryingToLockError
。
也许警告是为了告诉您,您将得到一个异常,而不是有用的锁定行为。
该异常的实现应该提供关于为什么不允许并发使用的提示。 DeferredFilesystemLock
使用一些实例属性(以 _tryLockCall
开头)来跟踪尝试获取锁的进度。如果允许并发尝试,他们将互相践踏对此属性(和其他属性)的使用。
这可以相对轻松地得到增强。所需要做的就是在每次尝试分配的新对象上(而不是在 DeferredFilesystemLock 实例上)保留与锁定尝试关联的状态。 Or, DeferredLock
could help.
关于python - 为什么 Twisted 的 DeferredFilesystemLocks 对于并发使用不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018819/