gpt4 book ai didi

c++ - 写入文件原始磁盘扇区

转载 作者:行者123 更新时间:2023-11-28 07:57:41 25 4
gpt4 key购买 nike

我正在使用 OS 可移植数据库服务器,我想知道在不锁定整个文件的情况下读取/写入索引文件磁盘扇区的最佳方法是什么。我的数据库磁盘管理器有一个位图,可以跟踪所有使用/未使用的扇区在索引文件中的位置。另外,是否有操作系统可移植的方式来执行此操作?

最佳答案

...read/write to a index file disk sectors without locking the entire file.

您可以只锁定您正在写入的(文件的)部分。在 Windows 下,这将使用 LockFile 来完成。 .顺便说一句,为什么不锁定整个文件很重要?无论如何,您的服务器都将独占访问它,并且它可以在内部管理锁定(除非您想要一个无服务器/嵌入式数据库,同时仍然允许多个客户端连接到它)。

实现交易durability ,您还需要确保您写入的数据不会在缓存/缓冲区中逗留,并且会在正确的时间物理写入磁盘。在 Windows 下,考虑将 FILE_FLAG_WRITE_THROUGH(可能还有 FILE_FLAG_NO_BUFFERING,假设您进行自己的缓存管理)传递给 CreateFile .

我认为没有独立于操作系统的 API 可用于任何这些 - 您需要在每个受支持的操作系统下以特殊方式执行此操作。当然,没有什么能阻止您封装特定于操作系统的代码并向系统的其余部分呈现统一的接口(interface)。

关于c++ - 写入文件原始磁盘扇区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12331879/

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