- 主题:[心得] 脉络分析:第6章 设计基于锁的并发数据结构 《C++并发
第6章 设计基于锁的并发数据结构
多线程数据并发访问方法:
1. 第三章,第四章 的技术
2. 设计一个可以同时访问的数据结构 ———— 本章内容
6.1 为并发设计的含义是什么
最基本的层面: 数据结构式线程安排的
实际上: 远远不只是并发问题
序列化
为并发设计数据结构的准则
两方面: a. 存取安全
b. 允许真正的并发存取
使用数据结构的条件也很重要:
最小化必然发生的序列化,并且能够最大限度的实现并发性。
6.2基于锁的并发数据结构
关键:确保存取数据是要锁住正确的互斥元,并且确保锁的时间最小化。
6.2.1 使用锁的线程安全栈
6.2.2 使用锁的线程安全队列
6.2.3 使用细粒度锁和条件变量的的线程安全队列
无界队列 ————> 有界队列超过本书范围
栈和队列都比较简单,数据结构越复杂,导致更多的并发机会
6.3 设计更复杂的基于锁的数据结构
6.3.1 使用锁的线程安全查找表
6.3.1 使用锁的线程安全链表
6.4 小结
.
--
修改:CyberPunker FROM 203.218.252.*
FROM 203.218.252.*
你说的跟 陈硕说的是一致的。
这两本书都在看,
《C++并发编程实战》使用的C++的原生实现。讲得更加原理性。特别是第五章,第七章讲得很底层,基本都没去看。
陈硕一二章说线程同步是基于Boost, 并且把同步用到的机制浓缩到了一个最小的集合。他书里的一些只提到的东西,在实战书中能找补回来。
都很有启发。
写这些脉络分析,是想把作者的思路给摘出来,让自己更加清楚,也些许能给别的读者有些启发。
1. 本身要对C++11有一定的理解。
2. 实战书 本身的逻辑还是很清晰的,特别是每一节的最后,能跟下一节接续起来。但是翻译确实有点差劲。第二版已经出来了,知乎上已经有人翻译了。
3. 陈硕书有点发散,不是很容易的看出他的思路。
【 在 hgoldfish 的大作中提到: 】
: 这些都可以学,仔细研究清楚。但千万别用。
: 最好使用更高层的抽象。比如 openmp, qtconcurrent 这些东东。使用纯函数的概念进行并行计算。或者使用 lockfree blocking queue 实现生产者消费者模式。才能生产出稳定高效的 cpp 程序。
:
--
修改:CyberPunker FROM 203.218.252.*
FROM 203.218.252.*
这章我也没太深入看,都是代码实现,
【 在 libgcc 的大作中提到: 】
: 道理我懂
: 但为什么要帖目录........
:
: ...................
--
FROM 203.218.252.*