线上沙龙 – 技术流第 32 期回放来啦
本期直播咱们邀请 KaiwuDB 高级研发工程师康俊,为大家分享 TBB 开源库及并发 Hashmap 的应用。康俊老师在 Raft 一致性协定优化、分布式存储与调度、高可用双活容灾、多 Region 天文分区等分布式解决模块研发畛域具备丰盛教训,现负责 KaiwuDB 根底数据结构研发与设计。
欢送大家点击观看本次直播回放,通过理解 TBB 开源库及学习如何应用并发 Hashmap 容器,为多线程操作下的代码开发提供数据的高性能并行计算,同时还能保障数据并发操作的平安 ↓↓↓
https://www.bilibili.com/video/BV1n8411Z7p2/?vd_source=700806…
直播重点回顾
01 TBB 开源库
在多线程环境下,数据操作将面临一个问题,即如何保障并发操作下数据的平安。应用 std 提供的规范容器,须要开发者通过加锁形式保障并发平安,无疑将减少代码开发的难度。
而 TBB 是 intel 应用规范 C++ 编写的开源并行计算库,编写该库是为了实现数据并行计算的能力。应用 TBB 提供的 C++ 模板库,能够使用户不用关注线程,只需关注工作自身。
在 TBB 内划分为了多个模块,包含算法模块、流程图模块、任务调度模块、容器模块、线程部分存储模块、内存调配模块、互斥模块、工夫模块、同步原语模块等。
- 算法模块:提供通用的并行算法,如 parallel_for, parallel_for_each, parallel_invoke;
- 容器模块:提供对常见容器的线程平安版本实现,如 Hashmap, vector, queue;
- 内存调配模块:提供内存调配相干的函数;
- 同步原语模块:提供对原子操作、mutex、lock 等同步原语的封装;
- 任务调度模块:提供对算法和工作驱动的调度引擎。
02 TBB 并发容器
在容器模块中,蕴含了 concurrent_vector、concurrent_queue、concurrent_bounded_queue 等多个并发容器,通过应用这些容器,能够实现不同业务间的并发操作平安。
03 并发 Hashmap 介绍及应用
容器模块也蕴含 concurrent_hash_map,它是一种反对多线程并发应用的 Hashmap 容器,有着较好的并发操作性能。该容器保留具备惟一 Key 的键值对,并且反对并发插入、查找、擦除等性能。
同时,该容器反对迭代器性能。应用并发 Hashmap 容器,能够在保障并发操作性能的同时,保护并发操作数据的平安。