gpt4 book ai didi

c++ - 您可以多次打开同一个文件进行写入吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:37 25 4
gpt4 key购买 nike

我们正在编写一个多线程应用程序,该应用程序执行大量位操作并将二进制数据写入磁盘。是否可以让每个线程 std::fopen 同时写入同一个文件?推理是每个线程都可以完成其工作并拥有自己对可写文件的访问权限。

最佳答案

std::fstream 具有根据 C stdio 库定义的功能。如果它真的被指定了,我会感到惊讶,但打开同一个文件两次最可能的行为是多个内部缓冲区绑定(bind)到同一个文件描述符。

在同一文件中同时写入多个点的常用方法是 POSIX pwritewritev。此功能不由 C stdio 包装,并且扩展也不由 C++ iostreams 包装。但是,对同一个文件系统文件使用多个描述符也可能有效。

编辑: POSIX open 在 Mac OS X 中对同一个文件调用两次会产生不同的文件描述符。因此,它可能适用于您的平台,但可能无法移植。

一个明确的答案需要连接这些点:

  • C++ 标准指定 fstream 像 C (stdio) 流一样工作。
  • C 标准定义了何时创建流(fopen 仅定义为将流与新打开的文件关联)。
  • POSIX 标准定义其对 C 流的要求。
  • POSIX 定义了打开同一个文件两次的情况。

这比我目前准备进行的研究要多一些,但我确信已经有人完成了跑腿工作。

关于c++ - 您可以多次打开同一个文件进行写入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469461/

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