我正在用 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/