从不同的机器同时调用CreateDirectory或CreateFile会发生什么?

时间:2011-12-11 11:50:14

标签: c++ windows winapi

我想将文件的临时目录用作需要在远程目录中读写的多个应用程序(来自多台计算机)的锁,但在文档中没有解决此问题。有谁知道两个同时通话会发生什么?

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

注意:我知道使用数据库是最好的,但在我的情况下这是不可能的。

1 个答案:

答案 0 :(得分:2)

当您从不同的计算机上调用CreateDirectory,传递相同的目录名时,只有一个呼叫会成功。如果是实际创建目录的调用,API函数将仅返回TRUE。拥有文件系统的机器上的操作系统使这个过程成为原子。

但是,在CreateDirectory的两次调用之间没有什么可以阻止另一个处理进入和删除目录。因此,虽然您可以获得原始形式的锁定工作,但它不是非常强大,需要所有各方合作。

同样的推理适用于CreateFile