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 源代码的各个知识要点与关键技术原理。本笔记除了对书中、网络上各种文献的阅读理解与归纳概括之外,还包含了我本人的见解。对待技术道路上的难题与瓶颈,我的能力还远远不足以应对大多数情形

从字符处理到简单虚拟机的实现

预取与回滚字符是语言的最基本单位,如果我们需要编写特定的程序对某个字符串进行某种特殊处理。我们从微观的角度上,一般通过处理每一个字符来达到目的。通常来说,计算机一般情况下是使用线性结构来存储字符串的。从结构上看就是一个字符接着一个字符,以此类推,然后通过一种结束标记来表示来表示这串字符的末尾,即字符

Modern C++ 语言特性查漏补缺

const 修饰的成员函数其本质是修改隐式this指针的类型,this指针将被认为是一个指向常量的指针默认构造函数 (default constructor)无需任何实参对类成员执行默认初始化合成的默认构造函数 (synthesized default constructor)即由编译器创建的默认构

COM 学习笔记 (2) : 接口查询

IUnknown 接口概述引述客户对组件的了解是非常有限的,为知道某个组件是否支持某个特定的接口,客户可以在运行时询问组件。即使组件不支持所需要的某个接口,客户也可以在请求失败时很好地处理这种情形IUnknown 接口COM 中所有内容最终都起于接口、又最终归于接口。所有的 COM 接口都继承于 I

COM 学习笔记 (1) : COM 简明概念

COM 的简明概念面向组件编程的优点应用的可定制性用户希望能够定制他们的应用,而程序员可以为用户建立应用定制方案 —— 通过组件架构本身的可定制性 (用户能使用需要的组件来将某个组件替换掉)组件库组件架构拥有快速应用开发的优点,程序员可以某个组件库中取出所需的组件并将其快速地组装到一起,构造出所需的
Your browser is out of date!

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

×