gpt4 book ai didi

c - 在没有竞争条件的情况下,在 Windows 上将文件大小增加到至少 N

转载 作者:行者123 更新时间:2023-11-30 15:52:24 25 4
gpt4 key购买 nike

我正在寻找一种方法,以不受竞争条件影响的方式将文件大小增加到至少 N 个字节。

当然,简单的方法有一个竞争条件:

LARGE_INTEGER large_int;
GetFileSizeEx(handle, &large_int);
if (large_int.QuadPart < N) {
SetFilePointerEx(handle, N, 0, FILE_BEGIN);
SetEndOfFile(handle);
}

有什么想法吗?

编辑:竞争条件的详细说明:

初始文件大小为零。Alice 想要将大小设置为至少 100。Bob 希望将大小设置为至少 200。很明显,如果没有竞争条件,那么当 Alice 和 Bob 都完成时,文件的大小必须至少为 200。

假设 Alice 和 Bob 读取的当前文件大小为零。然后Bob看到他需要将大小增加到200,所以他将大小设置为200。现在 Alice 开始运行,她得出的结论是 100 大于零,她认为这是当前的大小,然后她将大小设置为 100。

最佳答案

使用File Locking以确保只有一个进程会弄乱该文件。

可能是这样的:

check file size, if too small then
Lock file
check size again
set size if needed
Unlock file

关于c - 在没有竞争条件的情况下,在 Windows 上将文件大小增加到至少 N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14471338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com