1.9 KiB
1.9 KiB
TaskGroup::WaitFor
bool WaitFor(std::chrono::milliseconds timeout);
等待任务组中的所有任务完成,最多等待指定的超时时间。
参数:
timeout- 最大等待时间
返回:
true- 所有任务在超时前已完成false- 等待超时,仍有任务未完成
线程安全: ✅ 线程安全
示例:
#include "XCEngine/Threading/TaskGroup.h"
#include "XCEngine/Threading/Task.h"
#include <iostream>
#include <chrono>
using namespace XCEngine::Threading;
int main() {
TaskGroup group;
group.AddTask([]() {
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "Long running task completed\n";
});
std::cout << "Waiting with 1 second timeout...\n";
if (group.WaitFor(std::chrono::milliseconds(1000))) {
std::cout << "All tasks completed within timeout\n";
} else {
std::cout << "Timeout! Some tasks still running.\n";
}
group.Wait();
std::cout << "All tasks finally completed after second wait.\n";
return 0;
}
相关文档
- TaskGroup 总览 - 返回类总览
- Wait - 无限等待
详细描述
WaitFor 方法会阻塞当前线程,直到所有任务完成或超过指定的超时时间。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
timeout |
std::chrono::milliseconds |
超时时间(毫秒) |
返回值
返回 bool 类型:
true: 所有任务在超时前完成false: 发生超时
示例
TaskGroup* group = TaskSystem::Get().CreateTaskGroup();
group->AddTask([]() {
std::this_thread::sleep_for(std::chrono::seconds(5));
});
// 等待3秒超时
if (group->WaitFor(std::chrono::milliseconds(3000))) {
printf("All tasks completed on time\n");
} else {
printf("Wait timed out\n");
}
TaskSystem::Get().DestroyTaskGroup(group);