Skip to main content

C++20特性

协程

协程就是一个可以挂起(suspend)和恢复(resume)的函数(不能是 main 函数)。你可以暂停协程的执行, 去做其他事情,然后在适当的时候恢复到暂停的位置继续执行。协程让我们使用同步方式写异步代码。
C++ 提供了三个方法挂起协程:co_await, co_yield 和 co_return。
C++20 协程只是提供协程机制,而不是提供协程库。C++20 的协程是无栈协程,无栈协程是一个可以挂起/恢复的特殊函数,是函数调用的泛化,且只能被线程调用,本身并不抢占内核调度。

C++20 提供了三个新关键字(co_await、co_yield 和 co_return),如果一个函数中存在这三个关键字之一,那么它就是一个协程。

co_yield some_value:保存当前协程的执行状态并挂起,返回 some_value 给调用者。

co_await some_awaitable:如果 some_awaitable 没有 ready,就保存当前协程的执行状态并挂起。

co_return some_value:彻底结束当前协程,返回 some_value 给协程调用者。

三路比较运算符

类似于 C 的 strcmp 函数返回 -1, 0, 1。

范围 ranges

void func1(vector<string>& s) {
sort(s); //而不是 sort(vs.begin(), vs.end());
}

并发

std::promise
std::promise 和 std::future 是一对,通过它们可以进行更加灵活的任务控制。