gpt4 book ai didi

c - 当两个或多个线程或进程 ftruncate(2) 同一个文件时会发生什么?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:14 25 4
gpt4 key购买 nike

据我所知,当我将文件扩展到 2 GB 长度时,ftruncate(2) 不能是原子的。

但幕后究竟发生了什么?我已经应用它,当多个线程扩展文件时它似乎工作正常,但我不确定它是否不会导致任何数据丢失。

此外,假设有 2 个线程同时调用 ftruncate(2),第一个正在将文件扩展到 2 GB。同时,第二个线程调用 ftruncate(2)。现在的疑问是第一个线程没有完成完整的工作,第二个线程也开始了 ftruncate,那么会发生什么?

此外,如果这会造成任何麻烦,使用文件锁是否是明智的解决方案?我正在编写的这段代码是一个库,所以当使用库时,我不会知道正在使用库的进程的状态和配置。在这种情况下是否有可能出现死锁?

最佳答案

很好地回答了我的这个老问题,ftruncate(2) 就我过去观察到的而言是原子的。

@BearAqua 在评论中分享了 ftruncate(2)POSIX 共享内存 在 macOS 上的不当功能链接,但这对常规文件无效。

虽然据我所知,我找不到任何地方记录 ftruncate(2) 是原子的或类似的原因,但就我测试的内容而言,它是原子的。

关于c - 当两个或多个线程或进程 ftruncate(2) 同一个文件时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131943/

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