Files
XCEngine/docs/api/threading/task-group/set-complete-callback.md

83 lines
1.6 KiB
Markdown
Raw Normal View History

# TaskGroup::SetCompleteCallback
```cpp
void SetCompleteCallback(Callback&& callback);
```
设置任务组完成时的回调函数。当所有任务都执行完成后(包括被取消的任务),该回调将被调用。
**参数:**
- `callback` - 可调用对象,在所有任务完成后执行
**返回:** 无
**线程安全:** ✅ 线程安全
**示例:**
```cpp
#include "XCEngine/Threading/TaskGroup.h"
#include "XCEngine/Threading/Task.h"
#include <iostream>
using namespace XCEngine::Threading;
int main() {
TaskGroup group;
group.SetCompleteCallback([]() {
std::cout << "All tasks have been completed!\n";
});
for (int i = 0; i < 3; ++i) {
group.AddTask([i]() {
std::cout << "Task " << i << " executing\n";
});
}
group.Wait();
std::cout << "Back in main after Wait()\n";
return 0;
}
```
## 相关文档
- [TaskGroup 总览](task-group.md) - 返回类总览
## 详细描述
`SetCompleteCallback` 方法用于设置当任务组中所有任务都完成时调用的回调函数。回调在最后一个任务完成时触发。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| `callback` | `Callback&&` | 回调函数,类型为 `std::function<void()>` |
## 返回值
## 示例
```cpp
TaskGroup* group = TaskSystem::Get().CreateTaskGroup();
group->SetCompleteCallback([]() {
printf("All tasks in group have completed!\n");
});
for (int i = 0; i < 10; ++i) {
group->AddTask([i]() {
printf("Task %d completed\n", i);
});
}
// 等待所有任务完成,回调会被触发
group->Wait();
TaskSystem::Get().DestroyTaskGroup(group);
```