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

标签 c++ windows winapi

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

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

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

最佳答案

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

但是,在对 CreateDirectory 的两次调用之间,没有什么可以阻止另一个进程进入并删除目录。因此,虽然您可以获得一种原始形式的锁定工作,但它不是很健壮,需要各方合作。

同样的推理也适用于 CreateFile

关于c++ - 从不同机器同时调用 CreateDirectory 或 CreateFile 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463734/

相关文章:

C++ 初始化列表功能 : call functions without initializing member?

c++ - 函数定义中的函数声明

windows - bin/hadoop版本在CYGWIN中引发错误[WIndows 7]

c++ - 任务计划程序错误消息 : 80041318, 这是什么意思?

c++ - URLDownloadToFile 失败并返回 0x800c0008 (INET_E_DOWNLOAD_FAILURE),具体取决于 URL 的长度

c++ - std::move 在类模板中的构造函数初始值设定项列表中

c++ - 未调用 operator delete() 的类实现

c++ - GetLastInputInfo 不能正常工作?

javascript - 未知插件 "transform-decorators-legacy"在windows中使用react storybook时报错

winapi - 使用重叠 IO 进行控制台输入?