C++ 并发编程笔记(三)共享数据的保护与互斥锁

线程间共享数据问题引入线程间的共享数据的问题全部归咎于修改数据,而读取数据则没有问题。比如,在线程 A 中,对不变量 (invariants) 的更改会影响线程 B 对它状态的读取,以至于线程 B 无法准确地获得它的状态,从而使得基于这个状态而产生的对这个不变量的后续更改出现问题。举例来说,当线程

C++ 并发编程笔记(二)线程所有权的转移、数量选择与标识

线程所有权的转移、最优数量与标识所有权的转移赋值的形式每一个 std::thread 对象都对应一个线程实体,并且对象是无法进行拷贝的,但是可以使用 std::move() 语义将 std::thread 对象以右值的形式转移到另一个对象进行覆盖,而被覆盖的对象的析构函数会被调用,其结果是它所对应的

C++ 并发编程笔记(一)线程的启动、连接与分离

线程的基本管理启动线程这里常用的有三种方法,如下所示。/* 使用函数指针表示线程入口点 */void worker_func();std::thread my_thread1(worker_func); // 函数指针/* 使用仿函数表示线程入口点 */class mytask { public:

STL 源代码分析笔记 (3)

迭代器迭代器 (iterators) 提供一种方法,使其能够按照某种方式、某种顺序依次访问某个容器 (集合) 中的各个元素,并且对调用者隐藏容器 (集合) 的内部实现。关联类型迭代器要成为算法与容器之间通用的桥梁,必须要定义关联类型 (associated types)。关联类型就像一组规则,它定义

STL 源代码分析笔记 (2)

空间配置器空间配置器 (allocator) 是构造各类 STL 容器的基本工具,它提供了寻址、配置/释放与对象构造/析构的基本策略。在 SGI STL 中通过内部头文件 stl_alloc.h 实现主要功能,并借由头文件 alloc.h 引出以供用户使用。空间配置器的标准接口这里是笔者从 stl_

STL 源代码分析笔记 (1)

分析笔记C++ 是本人主要学习的编程语言,为了自己更深刻地了解 C++ 的底层机制,遂开此笔记,以记录学习、分析 STL 源代码的各个知识要点与关键技术原理。本笔记除了对书中、网络上各种文献的阅读理解与归纳概括之外,还包含了我本人的见解。对待技术道路上的难题与瓶颈,我的能力还远远不足以应对大多数情形
Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×