56 lines
1.3 KiB
Markdown
56 lines
1.3 KiB
Markdown
|
|
# TaskGroup::AddTask (Callback)
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
uint64_t AddTask(Callback&& func, TaskPriority priority = TaskPriority::Normal);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
将函数回调添加为任务。该方法接受一个可调用对象(lambda、函数指针、std::function 等)作为任务执行体。
|
|||
|
|
|
|||
|
|
**参数:**
|
|||
|
|
- `func` - 可调用对象,执行任务逻辑
|
|||
|
|
- `priority` - 任务优先级,默认为 Normal
|
|||
|
|
|
|||
|
|
**返回:** 返回分配给任务的唯一 ID,可用于后续添加依赖关系
|
|||
|
|
|
|||
|
|
**线程安全:** ✅ 线程安全
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
#include "XCEngine/Threading/TaskGroup.h"
|
|||
|
|
#include "XCEngine/Threading/Task.h"
|
|||
|
|
#include <iostream>
|
|||
|
|
|
|||
|
|
using namespace XCEngine::Threading;
|
|||
|
|
|
|||
|
|
int main() {
|
|||
|
|
TaskGroup group;
|
|||
|
|
|
|||
|
|
uint64_t task1 = group.AddTask(
|
|||
|
|
[]() { std::cout << "Task 1 executing\n"; },
|
|||
|
|
TaskPriority::Normal
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
uint64_t task2 = group.AddTask(
|
|||
|
|
[]() { std::cout << "Task 2 executing (High priority)\n"; },
|
|||
|
|
TaskPriority::High
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
uint64_t task3 = group.AddTask(
|
|||
|
|
[]() { std::cout << "Task 3 executing (Low priority)\n"; },
|
|||
|
|
TaskPriority::Low
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
group.AddDependency(task2, task1);
|
|||
|
|
|
|||
|
|
group.Wait();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [TaskGroup 总览](task-group.md) - 返回类总览
|
|||
|
|
- [AddTask(ITask)](add-task.md) - 添加 ITask 对象形式的任务
|
|||
|
|
- [TaskPriority](task-priority.md) - 任务优先级说明
|