def __init__(self, fd, keys, excl=True, lock=False, mod=1048573, _ctx_cleanup=None):
self.fd = fd
self.locked = False
self.mode = fcntl.LOCK_EX if excl else fcntl.LOCK_SH
self._ctx_cleanup = _ctx_cleanup
# sort so locks are acquired in consistent order
# guarantees no inter-process deadlocks
locks = set(hash(key) % mod for key in keys)
self.locks = tuple(sorted(locks))
if lock:
self.lock()
评论列表
文章目录