8. C++ 生命周期回顾
上一条:内部共享 下一条:Rust 函数参数上的生命周期(lifetime)标记
在继续看 Rust 的生命周期之前,再对 C++ 生命周期做下回顾
C++ 从 C 继承而来,对象生命周期的核心问题是:
- 对象生命周期
- Stack上对象的释放,一旦超出对象的作用域,就自动Destruct对象。
- Heap上对象的释放,需要手动delete 来触发Destruct。
- 对象状态管理
- 在一个线程内,对象可被多处持有,单线程的多处持有点都可能修改对象的状态
- 在多个线程内,对象可被多线程持有,多线程可并发地修改对象的状态
先看下对象的生命周期:
- 单线程
- Stack对象:
- Heap对象
- 多线程
- Stack对象
- Heap对象
再看下对象的状态管理:
- 单线程
- 不可变对象:可安全使用
- 可变对象:对象状态需要被`封装`才能处于尽量可控
- 例如把一个类的成员变量直接暴露出去,到处使用,就会带来封装泄漏,违反单一修改点原则
- 多线程
- 不可变对象:可安全使用
- 可变对象:对象状态处于多线程共享时,需要有互斥机制,例如信号量和互斥锁
- 并发修改对象,违反单一修改点原则
- 并发修改对象,如果不加互斥,会带来对象的状态修改处于`非原子`修改状态,A线程修改了一半,B对修改了一半的`脏数据`进行读写。
...全文
相关推荐
c++语言知识点总结 英文版 适合查询和快速回顾知识点
c++语言知识点总结 英文版 适合查询和快速回顾知识点,比大多中文版总结得要好
Essential Cpp Essential C++
EssentialC++_en.pdf EssentialC++_cn.pdf
C++ .h和.cpp文件总结
总结了.h文件能做什么,.cpp文件能做什么,总结了.h文件的本质,方便新手在遇到文件包含、类型声明、变量定义时能理清.h与.cpp关系,纯属个人总结文档。
33个c++重要知识总结(cpp代码)
c++基础知识复习,包含了33个cpp文件,每个文件包含特定主题的知识回顾,使用特定案例重温某些不常用但是重要的算法或函数的使用方法,含注释。
cpp代码-C++基础
cpp代码-C++基础



