在调用期间传递0
参数将阻止其他进程获取文件句柄,直到当前进程调用。dwShareMode
CreateFile
CloseHandle
那么锁定的目的是什么LockFileEx
?只有在检索句柄后才有能力锁定文件?
如果有许多进程尝试频繁读写同一个文件(例如,很有可能有 10 个进程可能同时尝试打开和写入同一个文件),那么使用for而不调用CreateFile
是否足以保证安全?0
dwShareMode
LockFileEx
下一个代码能保证安全并发吗(一次只有一个进程可以访问该文件)?
// There will be tens of instances of the program below, running at the same time
#include <Windows.h>
void updateFileSafe()
{
HANDLE handle = INVALID_HANDLE_VALUE;
while(handle == INVALID_HANDLE_VALUE)
handle = CreateFile(L"path", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
...
CloseHandle(handle);
}
int main()
{
for(;;)
{
updateFileSafe();
Sleep(100);
}
return 0;
}