我正在用C++实现一些文件系统。到目前为止,我一直在使用fstream
,但我意识到无法以独占模式打开它。由于有很多线程,我希望允许多次读取,并且在以写入模式打开文件时,我是否要以独占模式打开文件?
最好的方法是什么?我认为Boost
提供了一些功能。还有其他可能性吗?我也想看看简单的例子。如果用C++做起来不容易/不好,我也可以用C编写。
我正在使用Windows。
最佳答案
在许多操作系统上,这是根本不可能的,因此C++
不支持。您必须编写自己的streambuf
。
如果您担心的唯一平台是Windows,则可以
可能会使用独占模式打开它提供的功能。
但是,您更可能希望使用某种文件
锁定,更精确,如果没有,锁定在大多数情况下可用
所有平台(但不是可移植的,您需要LockFileEx
在Windows中为fcntl
(在Unix下)。
在Posix下,您还可以使用pthread_rwlock
。布滕霍夫
给出了使用经典互斥锁的实现,并且
条件变量,它们存在于C++ 11中,因此您可以
实际上实现了便携式版本(前提是所有
读者和作家处于同一过程中-Posix
请求将跨流程边界工作,但这不是
对于C++线程原语为true)。
关于c++ - 如何在C++中以独占模式打开文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16141018/