我有一个网络驱动器(Z:\),它被多台Windows计算机共享。是否可以通过在该网络驱动器上创建/删除文件来实现跨机器锁定?
例如,两台计算机A和B同时想要写入具有ID 123的共享资源。
其中一台计算机,比如说A,通过创建空文件Z:\locks\123首先锁定资源。当B看到名称为“123”的锁定文件时,B知道资源123正在被其他人使用,因此必须等待A删除Z:\locks\123才能访问该资源。
这就像多线程中的关键部分,但我想在多台机器上执行它。
我正在尝试使用Python实现。这是我想到的内容:
import os
import time
def lock_it(lock_id):
lock_path = "Z:\\locks\\" + lock_id
while os.path.exists(lock_path):
time.sleep(5) # wait for 5 seconds
# create the lock file
lock_file = open(lock_path, "w")
lock_file.close()
def unlock_it(lock_id):
# delete the lock file
lock_path = "Z:\\locks\\" + lock_id
if os.path.exists(lock_path):
os.remove(lock_path)
这种方式行不通,因为可能有多个进程同时退出等待状态并创建锁文件。
所以,问题是:是否可能在共享存储上实现跨计算机的锁定机制?