AsyncLoader
命名空间: XCEngine::Resources
类型: class (singleton)
描述: 异步资源加载器单例,负责多线程后台资源加载和完成回调调度。
概述
AsyncLoader 是 XCEngine 的后台异步加载系统。它使用独立工作线程从磁盘加载资源,并在加载完成后通过回调通知调用者。它维护待处理队列和完成队列,通过双缓冲机制实现无锁的线程安全操作。
单例访问
| 方法 |
描述 |
static AsyncLoader& Get() |
获取单例实例 |
LoadRequest 结构体
异步加载请求结构体。
| 成员 |
类型 |
描述 |
path |
Containers::String |
资源路径 |
type |
ResourceType |
资源类型 |
callback |
std::function<void(LoadResult)> |
加载完成回调函数 |
settings |
ImportSettings* |
导入设置(可为 nullptr) |
requestId |
Core::uint64 |
请求唯一标识符 |
构造方法
| 方法 |
描述 |
LoadRequest() |
默认构造 |
LoadRequest(const Containers::String& p, ResourceType t, std::function<void(LoadResult)> cb, ImportSettings* s = nullptr) |
从参数构造 |
LoadRequest(LoadRequest&& other) noexcept |
移动构造 |
LoadRequest(const LoadRequest&) = default |
拷贝构造 |
赋值
| 方法 |
描述 |
LoadRequest& operator=(LoadRequest&& other) noexcept |
移动赋值 |
LoadRequest& operator=(const LoadRequest&) = default |
拷贝赋值 |
公共方法
生命周期
| 方法 |
描述 |
void Initialize(Core::uint32 workerThreadCount = 2) |
初始化异步加载器,创建工作线程 |
void Shutdown() |
关闭异步加载器,等待所有挂起任务完成 |
提交请求
| 方法 |
描述 |
void Submit(const Containers::String& path, ResourceType type, std::function<void(LoadResult)> callback) |
提交异步加载请求 |
void Submit(const Containers::String& path, ResourceType type, ImportSettings* settings, std::function<void(LoadResult)> callback) |
带设置的异步加载请求 |
进度查询
| 方法 |
描述 |
void Update() |
更新函数,在主线程调用,处理完成的加载请求 |
bool IsLoading() const |
是否有正在加载的资源 |
Core::uint32 GetPendingCount() const |
获取待处理加载请求数量 |
float GetProgress() const |
获取整体加载进度(0.0f ~ 1.0f) |
取消操作
| 方法 |
描述 |
void CancelAll() |
取消所有待处理的加载请求 |
void Cancel(Core::uint64 requestId) |
取消指定 ID 的加载请求 |
实现说明
注意: 当前 AsyncLoader 的实现为部分完成状态(stub):
Initialize() 工作线程数参数被忽略
Submit() 仅将请求加入队列,不进行实际异步加载
Update() 不执行实际加载,直接调用回调返回成功
QueueCompleted() 和 Cancel() 为空实现
使用示例
相关文档