c++ 异步循环执行并每次返回结果
时间: 2024-11-27 08:09:55 浏览: 3
C++ 进度条百分比显示
3星 · 编辑精心推荐
在 C++ 中,你可以使用异步编程技术(如 std::async 和 std::future)来实现在一个循环中执行任务并逐次获取结果。这种方式常用于需要立即继续后续操作而不想阻塞线程的情况。以下是一个简单的例子:
```cpp
#include <iostream>
#include <future>
#include <vector>
// 假设这是你需要异步执行的任务函数
std::string asyncTask(size_t value) {
// 这里只是个示例,实际任务可能更复杂
return "Result for " + std::to_string(value);
}
int main() {
std::vector<size_t> tasks = {0, 1, 2, 3, 4}; // 循环执行的任务列表
// 创建一个未来容器来存储每个任务的结果
std::vector<std::future<std::string>> results;
// 使用async启动异步任务,并将结果保存到results中
for (size_t task : tasks) {
results.push_back(std::async(std::launch::async, asyncTask, task));
}
// 遍历结果,当每个任务完成时打印出来
for (const auto& future : results) {
try {
std::string result = future.get(); // 等待并获取结果
std::cout << "Async result: " << result << '\n';
} catch (std::exception &e) {
std::cerr << "Error in async operation: " << e.what() << '\n';
}
}
return 0;
}
```
在这个例子中,`asyncTask` 函数会被异步执行,并通过 `get()` 方法等待其完成。每完成一个任务,程序会打印出相应的结果。
阅读全文