cpp的理解

cpp这门语言与其他语言设计上的不同之处,在于cpp为了高效运行,没有采用在堆上分配对象通过GC管理对象。而是选择了一种更加高效但是更加困难的方式,通过尽量在栈上分配内存。因为栈上分配和释放内存只需要几条cpu指令就能完成,而在栈上则需要调用分配函数这需要更多的时间。而且栈的内存布局更加紧凑,对缓存更加的友好。但是也因为栈的先进先出的特性,这让对象的生命周期更加的难以管理,因为栈帧返回后直接就释放了。而且函数参数的传参也变得复杂,有很多的方式减少传参带来的开销,许多cpp特性就是为了解决这个问题产生的。 ...

June 11, 2026 · 4 min · 1505 words

cpp线程的创建

线程 线程的创建 在cpp中线程的创建有两种形式 默认构造 传入可调用对象如: 函数, 函数对象, 对象的成员函数, 对象的静态函数, lambda表达式 线程的构造函数会按值复制所有参数,这点很重要, 对于想要传递引用的变量时,要使用std::ref() ...

June 11, 2026 · 2 min · 505 words

并发架构与同步原语

为了追求极限性能,cpu硬件搞出了独立缓存(L1/L2)和乱序执行,但也留下了“数据不同步”和“顺序错乱”的烂摊子。硬件用MESI协议和内存屏障指令来修补。编程语言为了抹平不同平台(xv6/arm)的差异,制定了内存模型契约,让程序员通过指定内存序(relaxed/acquire/release/sc)来指挥编译器和cpu自动插入屏障。而程序员利用这些契约和底层的硬件CAS指令,最终构建出了无锁算法以及互斥锁等同步原语,为多线程并发提供了正确同步的基础设施。 ...

June 11, 2026 · 7 min · 3407 words