一:什么是协程(Coroutines):
协程是轻量级线程,可以暂停和恢复执行,协程拥有自己的暂停点状态,协程暂停时,将当前状态保存起来,在恢复执行时会恢复之前保存的状态。
二:例子:
#include <coroutine>
#include <iostream>
void doTheWork() {
std::cout << "Processing shared data." << std::endl;
}
template<typename T>
struct Generator {
struct promise_type;
using handle_type = std::coroutine_handle<promise_type>;
Generator(handle_type h) : coro(h) {} // (3) //创建生成器
handle_type coro;
~Generator() {
if (coro) coro.destroy();
}
Generator(const Generator&) = delete;
Generator& operator = (const Generator&) = delete;
Generator(Generator&& oth) noexcept : coro(oth.coro) {
oth.coro = nullptr;
}
Generator& operator = (Generator&& oth) noexcept {
coro = oth.coro;
oth.coro = nullptr;
return *this;
}
T getValue() {
re