gpt4 book ai didi

c++ - 如何在C++中以独占模式打开文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:12 33 4
gpt4 key购买 nike

我正在用 C++ 实现一些文件系统。到目前为止,我一直在使用 fstream,但我意识到无法以独占模式打开它。由于线程很多我想允许多次读取,而以写入模式打开文件时我想以独占模式打开文件?
最好的方法是什么?我认为 Boost 提供了一些功能。还有其他可能吗?我也想看看简单的例子。如果用 C++ 做起来不容易/不好,我也可以用 C 来写。

我正在使用 Windows。

最佳答案

在许多操作系统上,这是不可能的,所以 C++不支持它。您必须编写自己的 streambuf。如果您担心的唯一平台是 Windows,您可以可能使用它提供的打开独占模式。但是,您更有可能希望使用某种文件锁定,更精确,并且在大多数情况下可用所有平台(但不可移植——你需要 LockFileEx在 Windows 下,fcntl 在 Unix 下)。

在 Posix 下,您还可以使用 pthread_rwlock。布滕霍夫给出了使用经典互斥锁的实现和条件变量,存在于 C++11 中,因此您可以实际上实现了一个便携版本(提供所有的读者和作者在同一个进程中——Posix请求将跨进程边界工作,但这不是对于 C++ 线程原语为真)。

关于c++ - 如何在C++中以独占模式打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141018/

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