NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
file_mapper类 参考

内存映射文件工具类 更多...

#include <file_mapper.hpp>

struct  map_info
 映射状态快照 更多...

Public 类型

using size_type = size_t
 大小类型
using native_handle_type = _NEFORCE native_handle_type
 原生文件句柄类型

Public 成员函数

 file_mapper (native_handle_type file_handle)
 构造函数
 ~file_mapper ()
 析构函数
 file_mapper (file_mapper &&other) noexcept
 移动构造函数
file_mapperoperator= (file_mapper &&other) noexcept
 移动赋值运算符
bool map (size_type offset=0, size_type size=0, file_access access=file_access::READ, file_map_hint hint=file_map_hint::SEQUENTIAL)
 映射文件到内存
void unmap () noexcept
 解除映射
bool remap (size_type new_offset, size_type new_size)
 重新映射到新区域
bool flush (bool async=false) noexcept
 刷新映射区域到磁盘
bool lock_pages (bool lock_in_memory) const noexcept
 锁定/解锁映射页到物理内存
NEFORCE_NODISCARD void * data () const noexcept
 获取映射起始地址指针
NEFORCE_NODISCARD size_type size () const noexcept
 获取映射字节大小
NEFORCE_NODISCARD size_type offset () const noexcept
 获取映射偏移
NEFORCE_NODISCARD file_access access () const noexcept
 获取访问权限
NEFORCE_NODISCARD bool is_mapped () const noexcept
 检查是否已映射
NEFORCE_NODISCARD map_info info () const noexcept
 获取映射状态快照

详细描述

内存映射文件工具类

管理单个文件的内存映射生命周期,支持映射、解映射、重映射及刷新。 提供对文件内容的直接内存访问,适用于需要频繁随机访问的场景。

主要功能:

  • 映射文件到内存
  • 解除映射
  • 重新映射到不同区域
  • 刷新映射内容到磁盘
  • 锁定/解锁映射页到物理内存

性能优势:

  • 避免系统调用开销
  • 操作系统自动管理页面缓存
  • 支持大文件的高效访问
注解
映射的文件内容可能与其他进程不同步,需要适当使用flush()同步。
多个线程同时操作同一映射区域需要外部同步。
不持有文件句柄所有权,句柄生命周期由调用方保证。

在文件 file_mapper.hpp45 行定义.

构造及析构函数说明

◆ file_mapper() [1/2]

file_mapper::file_mapper ( native_handle_type file_handle)
explicit

构造函数

参数
file_handle已打开的文件句柄

创建内存映射管理器,关联指定的文件句柄。 初始状态为未映射。

被这些函数引用 file_mapper(), operator=() , 以及 ~file_mapper().

◆ ~file_mapper()

file_mapper::~file_mapper ( )

析构函数

自动解除映射并释放相关资源。

引用了 file_mapper().

◆ file_mapper() [2/2]

file_mapper::file_mapper ( file_mapper && other)
noexcept

移动构造函数

参数
other要移动的对象

引用了 file_mapper().

成员函数说明

◆ flush()

bool file_mapper::flush ( bool async = false)
noexcept

刷新映射区域到磁盘

参数
async是否异步刷新
返回
刷新成功返回true

将映射内存中修改的内容写回磁盘文件。 异步刷新可提高性能但可能丢失数据。

引用了 async() , 以及 flush().

被这些函数引用 flush().

◆ lock_pages()

bool file_mapper::lock_pages ( bool lock_in_memory) const
noexcept

锁定/解锁映射页到物理内存

参数
lock_in_memorytrue锁定,false解锁
返回
操作成功返回true

锁定映射页到物理内存,防止被换出到交换空间。 适用于对延迟敏感的应用场景。

注解
解锁时只释放锁定,不会解除映射。
可能需要权限。

引用了 lock_pages().

被这些函数引用 lock_pages().

◆ map()

bool file_mapper::map ( size_type offset = 0,
size_type size = 0,
file_access access = file_access::READ,
file_map_hint hint = file_map_hint::SEQUENTIAL )

映射文件到内存

参数
offset映射起始偏移(字节)
size映射长度(字节),0表示映射到文件末尾
access访问模式
hint访问模式提示,用于优化页面预取
返回
映射成功返回true,失败返回false

将文件的指定区域映射到进程地址空间。 如果offset不是系统页面大小的整数倍,会自动对齐。 size为0时映射从offset到文件末尾的所有内容。

注解
映射后可以通过data()指针直接访问文件内容。
写操作可能需要权限。

引用了 access(), offset(), SEQUENTIAL , 以及 size().

◆ operator=()

file_mapper & file_mapper::operator= ( file_mapper && other)
noexcept

移动赋值运算符

参数
other要移动的对象
返回
自身引用

引用了 file_mapper().

◆ remap()

bool file_mapper::remap ( size_type new_offset,
size_type new_size )

重新映射到新区域

参数
new_offset新的起始偏移
new_size新的映射大小
返回
重新映射成功返回true

解除当前映射,然后创建新的映射。 保持相同的访问权限。

引用了 remap().

被这些函数引用 remap().

◆ unmap()

void file_mapper::unmap ( )
noexcept

解除映射

解除当前映射,释放映射内存。


该类的文档由以下文件生成: