83 lines
1.6 KiB
Markdown
83 lines
1.6 KiB
Markdown
|
|
# 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);
|
||
|
|
```
|