docs: update memory and threading API docs

This commit is contained in:
2026-03-20 02:35:24 +08:00
parent c5b17239ca
commit fd792b7df1
103 changed files with 2485 additions and 673 deletions

View File

@@ -0,0 +1,36 @@
# LinearAllocator::LinearAllocator
```cpp
explicit LinearAllocator(size_t size, IAllocator* parent = nullptr);
```
构造一个线性分配器,预分配指定大小的缓冲区。如果提供了 `parent` 分配器,则使用它分配底层缓冲区;否则使用系统默认分配(`_aligned_malloc`8 字节对齐)。
**参数:**
- `size` - 预分配的缓冲区大小(字节数)
- `parent` - 父分配器,用于分配底层缓冲区,默认为 `nullptr`(使用系统分配)
**返回:**
**复杂度:** O(n),需要分配 `size` 大小的缓冲区
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
// 使用系统分配器创建 1MB 线性分配器
LinearAllocator allocator1(1024 * 1024);
// 使用指定的父分配器
IAllocator* parent = MemoryManager::Get().GetSystemAllocator();
LinearAllocator allocator2(1024 * 1024, parent);
// 默认 8 字节对齐
void* ptr = allocator1.Allocate(256);
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览
- [IAllocator](../allocator/allocator.md) - 分配器接口

View File

@@ -0,0 +1,31 @@
# LinearAllocator::GetAllocationCount
```cpp
size_t GetAllocationCount() const override;
```
返回自分配器创建以来的累计分配次数。线性分配器不支持单个块释放,始终返回 0。
**参数:**
**返回:** 始终返回 `0`
**复杂度:** O(1)
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
LinearAllocator allocator(1024);
allocator.Allocate(256);
allocator.Allocate(128);
allocator.Allocate(64);
size_t count = allocator.GetAllocationCount(); // 0不支持计数
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览

View File

@@ -4,13 +4,13 @@
void* GetMarker() const;
```
获取当前分配位置的标记。标记是内部偏移量(`m_offset`)的快照,可用于 `SetMarker` 恢复到该位置。此方法用于实现临时分配的撤销功能。
获取当前分配位置的标记。标记是内部偏移量(`m_offset`)的快照,`void*` 类型返回。将此值传给 `SetMarker` 恢复到该位置。此方法用于实现临时分配的撤销功能。
**参数:**
**返回:** 当前位置标记(偏移量值,类型为 `void*`
**返回:** 当前位置标记(偏移量值,类型为 `void*`
**注意:** 返回值是偏移量数值,不是指针。将其传给 `SetMarker` 可恢复到此分配位置。
**注意:** 返回值是偏移量数值的指针表示,不是真实内存指针。将其传给 `SetMarker` 可恢复到此分配位置。
**复杂度:** O(1)

View File

@@ -0,0 +1,27 @@
# LinearAllocator::GetName
```cpp
const char* GetName() const override;
```
返回分配器的名称字符串,用于调试和日志输出。
**参数:**
**返回:** 固定返回 `"LinearAllocator"`
**复杂度:** O(1)
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
LinearAllocator allocator(1024);
const char* name = allocator.GetName(); // "LinearAllocator"
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览

View File

@@ -0,0 +1,33 @@
# LinearAllocator::GetPeakAllocated
```cpp
size_t GetPeakAllocated() const override;
```
返回自分配器创建以来的峰值分配字节数。对于线性分配器,这等于总容量(`m_capacity`)。
**参数:**
**返回:** 峰值分配字节数(等于容量)
**复杂度:** O(1)
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
LinearAllocator allocator(1024);
size_t peak = allocator.GetPeakAllocated(); // 1024容量
allocator.Allocate(512);
size_t used = allocator.GetUsedSize(); // 512
// 即使未达到容量,峰值仍为容量大小
size_t peak_after = allocator.GetPeakAllocated(); // 1024
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览

View File

@@ -0,0 +1,36 @@
# LinearAllocator::GetTotalAllocated
```cpp
size_t GetTotalAllocated() const override;
```
返回自分配器创建以来的累计分配字节数。对于线性分配器,这等于当前已使用的字节数(`m_offset`)。
**参数:**
**返回:** 累计已分配的字节数
**复杂度:** O(1)
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
LinearAllocator allocator(1024);
size_t total1 = allocator.GetTotalAllocated(); // 0
allocator.Allocate(256);
allocator.Allocate(128);
size_t total2 = allocator.GetTotalAllocated(); // 384
allocator.Clear();
size_t total3 = allocator.GetTotalAllocated(); // 0Clear 后重置)
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览

View File

@@ -0,0 +1,30 @@
# LinearAllocator::GetTotalFreed
```cpp
size_t GetTotalFreed() const override;
```
返回自分配器创建以来的累计释放字节数。线性分配器不支持单个块释放,始终返回 0。
**参数:**
**返回:** 始终返回 `0`
**复杂度:** O(1)
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
LinearAllocator allocator(1024);
void* ptr = allocator.Allocate(256);
allocator.Free(ptr); // 无实际效果
size_t freed = allocator.GetTotalFreed(); // 0
```
## 相关文档
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览

View File

@@ -4,6 +4,8 @@
**类型**: `class`
**头文件**: `XCEngine/Memory/LinearAllocator.h`
**描述**: 线性分配器,适合帧分配和临时对象。
## 概述
@@ -14,51 +16,21 @@
| 方法 | 描述 |
|------|------|
| `LinearAllocator` | 构造线性分配器 |
| `~LinearAllocator` | 析构函数,释放底层缓冲区 |
| `Allocate` | 顺序分配内存 |
| `Free` | 无效果(不支持) |
| `Reallocate` | 不支持(始终返回 nullptr |
| `Clear` | 清空所有分配 |
| `GetMarker` | 获取当前位置标记 |
| `SetMarker` | 回滚到指定标记位置 |
| `GetUsedSize` | 获取已使用字节数 |
| `GetCapacity` | 获取总容量 |
## 构造函数
```cpp
explicit LinearAllocator(size_t size, IAllocator* parent = nullptr);
~LinearAllocator() override;
```
构造一个线性分配器,预分配指定大小的缓冲区。如果提供了 `parent` 分配器,则使用它分配底层缓冲区;否则使用系统默认分配(`_aligned_malloc`8 字节对齐)。
**参数:**
- `size` - 预分配的缓冲区大小(字节数)
- `parent` - 父分配器,用于分配底层缓冲区,默认为 `nullptr`(使用系统分配)
**返回:**
**复杂度:** O(n),需要分配 `size` 大小的缓冲区
**注意:** `Free``Reallocate` 方法无实际效果。`Free` 是空操作,`Reallocate` 始终返回 `nullptr`
**示例:**
```cpp
#include <XCEngine/Memory/LinearAllocator.h>
// 使用系统分配器创建 1MB 线性分配器
LinearAllocator allocator1(1024 * 1024);
// 使用指定的父分配器
IAllocator* parent = MemoryManager::Get().GetSystemAllocator();
LinearAllocator allocator2(1024 * 1024, parent);
// 默认 8 字节对齐
void* ptr = allocator1.Allocate(256);
```
| [`LinearAllocator`](constructor.md) | 构造线性分配器 |
| [`~LinearAllocator`](~linear-allocator.md) | 析构函数,释放底层缓冲区 |
| [`Allocate`](allocate.md) | 顺序分配内存 |
| [`Free`](free.md) | 无效果(不支持) |
| [`Reallocate`](reallocate.md) | 不支持(始终返回 nullptr |
| [`Clear`](clear.md) | 清空所有分配 |
| [`GetMarker`](get-marker.md) | 获取当前位置标记 |
| [`SetMarker`](set-marker.md) | 回滚到指定标记位置 |
| [`GetUsedSize`](get-used-size.md) | 获取已使用字节数 |
| [`GetCapacity`](get-capacity.md) | 获取总容量 |
| [`GetName`](get-name.md) | 获取分配器名称 |
| [`GetTotalAllocated`](get-total-allocated.md) | 获取累计分配字节数 |
| [`GetTotalFreed`](get-total-freed.md) | 获取累计释放字节数 |
| [`GetPeakAllocated`](get-peak-allocated.md) | 获取峰值分配字节数 |
| [`GetAllocationCount`](get-allocation-count.md) | 获取分配次数 |
## 相关文档

View File

@@ -4,7 +4,7 @@
~LinearAllocator() override;
```
销毁线性分配器,释放预分配的缓冲区。如果提供了 `parent` 分配器,则使用它释放缓冲区;否则使用系统默认释放(`::operator delete`)。
销毁线性分配器,释放预分配的缓冲区。如果提供了 `parent` 分配器,则使用它释放缓冲区;否则使用系统默认释放(`_aligned_free`)。
**参数:**