协程的优势就是比线程切换的时间少很多,协程的切换时间是纳秒,而进行切换的时间是微秒
单线程用协程可以轻松的处理并发任务
co_yield和co_await可以将协程暂停下来
resume又把协程激活
如果c++函数里有co_await、co_return、co_yield就会自动判定为协程
协程若不写函数返回值,它会自动返回
struct CoRet {
struct promise_type {
suspend_never initial_suspend() { return {}; }
suspend_never final_suspend() noexcept { return {}; }
void unhandled_exception() {}
CoRet get_return_object() {
return { coroutine_handle<promise_type>::from_promise(*this) };
}
};
coroutine_handle<promise_type> _h;
};
写成的返回值需要实现promise_type结构体以及内部这几个函数,第一个是初始化时即会调用该函数,第二个结束时调用该函数,第三个是异常处理函数,第四个是CoRet被作为返回值抛出的返回值函数