|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
内存映射文件工具类 更多...
#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_mapper & | operator= (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 |
| 获取映射状态快照 | |
内存映射文件工具类
管理单个文件的内存映射生命周期,支持映射、解映射、重映射及刷新。 提供对文件内容的直接内存访问,适用于需要频繁随机访问的场景。
主要功能:
性能优势:
在文件 file_mapper.hpp 第 45 行定义.
|
explicit |
构造函数
| file_handle | 已打开的文件句柄 |
创建内存映射管理器,关联指定的文件句柄。 初始状态为未映射。
被这些函数引用 file_mapper(), operator=() , 以及 ~file_mapper().
| file_mapper::~file_mapper | ( | ) |
|
noexcept |
|
noexcept |
|
noexcept |
锁定/解锁映射页到物理内存
| lock_in_memory | true锁定,false解锁 |
锁定映射页到物理内存,防止被换出到交换空间。 适用于对延迟敏感的应用场景。
引用了 lock_pages().
被这些函数引用 lock_pages().
| 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 | 访问模式提示,用于优化页面预取 |
将文件的指定区域映射到进程地址空间。 如果offset不是系统页面大小的整数倍,会自动对齐。 size为0时映射从offset到文件末尾的所有内容。
引用了 access(), offset(), SEQUENTIAL , 以及 size().
|
noexcept |
|
noexcept |
解除映射
解除当前映射,释放映射内存。