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

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

Emacs 学习笔记(一)

GNU Emacs 学习笔记(一)基本组合键C-f 右移字符C-b 左移字符C-n 下一行C-p 上一行C-a 到行首C-e 到行尾M-f 向右移动一个词M-b 向左移动一个词M-a 到句首M-e 到句尾C-v 下一页M-v 上一页C-l 中置屏幕C-u N Command 重复执行 Command

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

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

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

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

本科毕业设计:自制编程语言及其编译系统

这是我的本科毕业设计,历时数月自行独立设计了一门新的编程语言,面向过程且图灵完备。并且笔者在这个基础上,不依赖任何第三方库与生成器的前提下,从零开始用 C++ 编写并实现了一套由编译器、汇编器和虚拟机组成的,完备的编译系统。详细说明请转到我的 Github 项目主页。FROG 编译系统:https:

我对现状的反思

镜方向适龄转行 or 技术专家路线, etc.对于未来广阔的时间与空间,人的相貌、心境都将不可避免、或多或少地发生变化,这一切存在太多可能性了。我也许会转行,但是我认为我应该成为一名技术专家,前提条件是在这个领域内我有绝对的优势。不过无论如何,将一件事情在可掌控的范围内做好做精是自己一贯的行事风格。

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

×