TBB 开源库及并发 Hashmap 的使用
线上沙龙 - 技术流第 32 期回放来啦
本期直播我们邀请 KaiwuDB 高级研发工程师康俊,为大家分享 TBB 开源库及并发 Hashmap 的使用。康俊老师在 Raft 一致性协议优化、分布式存储与调度、高可用双活容灾、多 Region 地理分区等分布式处理模块研发领域具备丰富经验,现负责 KaiwuDB 基础数据结构研发与设计。
欢迎大家点击观看本次直播回放,通过了解 TBB 开源库及学习如何使用并发 Hashmap 容器,为多线程操作下的代码开发提供数据的高性能并行计算,同时还能保障数据并发操作的安全 ↓↓↓
https://www.bilibili.com/video/BV1n8411Z7p2/
直播重点回顾
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 容器,可以在保证并发操作性能的同时,维护并发操作数据的安全。
评论