分类: C++

2 篇文章

【施工中】C++原子变量与内存序:无锁编程的原理
1. 问题的引入 1.1. 多线程带来的三个问题 在多线程编程下,程序的运行结果可能并不如我们所预料的一致。这主要是由以下三种原因导致的: 1.1.1. 非原子操作 原子操作(atomic operation)指不会被线程调度机制中断的一个或一系列操作。从汇编的角度去思考,我们会发现C/C++中有不少常见语句在编译成汇编语言后,往往被转换成了多条汇…
C++ hash table and stuff
C++ hash table and related stuff 1. 引入 主要涉及的模板类有set/unordered_set/map/unordered_map。其中,无unordered前缀的版本(即set和map)均内部实现红黑树,而unordered_set和unordered_map内部实现哈希表。此外,map组与set组之间区别在于…