C++ (13)
-
C++protobuf:基础和构建项目流程
该文章介绍了使用cmake工具安装protobuf的步骤,以及给出一个简单的使用C++ protobuf例子,并介绍如果使用cmake对proto文件进行管理和自动生成,并给出一个完整的项目配置结构和流程。
-
C++并发设计:背景基础知识-深入理解内存序
该文章主要对并发设计中涉及同步知识进行总结,包括:CPU缓存结构、缓存一致性协议MESI, CPU间是如何通信的以及产生跨CPU同步问题,使用内存屏障来解决跨CPU共享变量同步问题。
-
C++并发设计:线程池设计(二)— 代码实现
本文章通过C++并发设计:线程池设计(一)项目代码分析文章总结的线程池设计框架,以及代码设计的优秀之处,结合各个项目的优点,然后再进行整合,采用C++23标准最终实现自己的线程池代码,这里更关注设计,因此采用C++23标准可以直接使用move_only_function,而减少实现上的复杂性,兼容低版本可以自身实现move_only_func,并使用C++concepts对模板参数进行约束。
-
C++并发设计:线程池设计(一)— 项目代码分析
本篇文章通过介绍和总结当前开源的C++线程池(按照讲解顺序,依次为CTPL、thread-pool) 设计代码实现、分析单队列和多队列俩者的实现方式,以及异步执行获取结果方式 C++20 binary_semaphore和jthread新特性使用和讨论。
-
C++并发设计:notify_one 何时需要加锁
该文章主要分析对std::condition_variable中notify_one和wait的使用以及分析notify_one需要加锁和不需要加锁的俩种情况,以及虚假唤醒处理,并给出最佳实现方式。
-
C++基础:inline 关键字
介绍 C++17 inline variable,以及 inline 在头文件中定义变量和静态成员的用法。
-
C++对象生命周期专题:特殊成员函数与三/五/零法则
从对象的创建、复制、移动到销毁,梳理 C++ 特殊成员函数的隐式声明、定义、删除规则,以及三法则、五法则和零法则。
-
C++优化:编译器中的 Copy elision 和 RVO 优化
介绍复制省略、RVO 和 NRVO 的原理、适用场景以及不同 C++ 标准下的行为。
-
C++基础: filesystem 库使用
介绍 C++17 filesystem 库中路径、目录和文件类型相关的常用操作。
-
C++基础:日期与时间 chrono库介绍及使用
介绍 C++ chrono 库中的 duration、clock、time_point、calendar 及常见用法。
-
C++基础:随机数random库 介绍及应用
总结 C rand 函数、C++ random 库、随机分布和常见随机化算法的使用。
-
C++基础:CRTP概念与应用和concept
介绍 CRTP 的基本思想、常见应用,以及 C++20 concept 对模板参数的约束。
-
C++基础:RAII与智能指针
介绍 RAII 资源管理思想,以及 shared_ptr、weak_ptr 和 unique_ptr 的使用。