cpp

C++协程(Coroutines)

study

C++协程(Coroutines)

原文链接:https://ovea-y.cn/cpp_coroutine_20/ C++协程(Coroutines) 1. 简单介绍协程 协程可以简单的理解为,它是一个可以随时“中断”,并再次恢复执行的函数。 C++协程框架的特点: * 无栈协程 * 非对称设计(开发者可以自行设计协程调度器,做成对称设计) 2. 协程和函数的区别 函数:函数调用是线性、同步、一次性的执行模式,调用者必须等待被调用方法执行完成后返回。 协程:协程可以异步执行,调用者不需要等待协程完成,可以在协程挂起时继续做其他事情。在执行过程中通过特定的语法(co__yield_和_co__await)暂停执行,并在之后的某个时刻恢复执行。 2.1 普通函数的执行过程 一个普通函数在执行的时候,主要包含两个操作,分别是调用(call)和返回(return)

By 夕元
C++ std::move的作用,以及它如何影响智能指针所有权

cpp

C++ std::move的作用,以及它如何影响智能指针所有权

原文链接:https://ovea-y.cn/cpp_move_analysis/ 标题: 分析C++ std::move的作用,以及它如何影响智能指针所有权 在介绍std::move之前,首先需要说明C++中左值右值相关的概念。 基本概念 左值(lvalue) 左值是可以标识内存位置的表达式,通常是有名字的变量或对象。左值表示一个可修改的数据,你可以对其取地址。例如,变量、数组元素、结构体成员等都是左值。 int x = 13; // x 是左值 int* ptr = &x; // &x 返回一个左值 右值(rvalue) 右值是不具有标识内存位置的临时表达式,通常是计算的结果或临时对象。右值表示临时的、一次性的数据,不能对其取地址。例如,字面值、临时对象、表达式的计算结果等都是右值。

By 夕元