C++20 引入了协程支持,使得编写异步代码变得更加简单。在 C++ 中,协程同步主要通过以下几种方式实现:
std::future<int> asyncOperation() {
// 异步操作
}
coroutine<int> myCoroutine() {
int result = co_await asyncOperation();
// 处理结果
}
coroutine<int> myCoroutine() {
for (int i = 0; i < 5; ++i) {
co_yield i;
}
}
coroutine<int> myCoroutine() {
int result = 0;
for (int i = 0; i < 5; ++i) {
result += i;
}
co_return result;
}
std::promise<int> prom;
std::future<int> fut = prom.get_future();
std::thread([&]() {
int result = asyncOperation();
prom.set_value(result);
}).detach();
int value = fut.get(); // 获取异步操作的结果
通过这些方式,C++ 协程可以方便地实现同步操作,使得异步编程更加简单和直观。