docs: update memory and threading API docs
This commit is contained in:
62
docs/api/threading/task-group/add-task.md
Normal file
62
docs/api/threading/task-group/add-task.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# TaskGroup::AddTask
|
||||
|
||||
```cpp
|
||||
uint64_t AddTask(std::unique_ptr<ITask> task);
|
||||
uint64_t AddTask(Callback&& func, TaskPriority priority = TaskPriority::Normal);
|
||||
```
|
||||
|
||||
将任务添加到任务组。支持两种添加方式:传入 ITask 对象或传入回调函数。
|
||||
|
||||
**参数:**
|
||||
- `task` - 唯一指针管理的 ITask 对象
|
||||
- `func` - 要执行的回调函数
|
||||
- `priority` - 任务优先级,默认为 `TaskPriority::Normal`
|
||||
|
||||
**返回:** 返回分配的任务 ID,可用于设置依赖关系
|
||||
|
||||
**线程安全:** ✅ 线程安全
|
||||
|
||||
**复杂度:** O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
#include "XCEngine/Threading/TaskGroup.h"
|
||||
#include "XCEngine/Threading/Task.h"
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
using namespace XCEngine::Threading;
|
||||
|
||||
class MyTask : public ITask {
|
||||
public:
|
||||
explicit MyTask(const std::string& name) : m_name(name) {}
|
||||
|
||||
void Execute() override {
|
||||
std::cout << "Executing: " << m_name << "\n";
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_name;
|
||||
};
|
||||
|
||||
int main() {
|
||||
TaskGroup group;
|
||||
|
||||
auto task = std::make_unique<MyTask>("DataLoading");
|
||||
uint64_t taskId = group.AddTask(std::move(task));
|
||||
|
||||
uint64_t callbackId = group.AddTask([]() {
|
||||
std::cout << "Lambda task executing\n";
|
||||
}, TaskPriority::High);
|
||||
|
||||
group.AddDependency(callbackId, taskId);
|
||||
|
||||
group.Wait();
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [TaskGroup 总览](task-group.md) - 返回类总览
|
||||
Reference in New Issue
Block a user