前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
## 自定义数据类型介绍 多线程并行是本框架的特点之一, 所以通常都会对变量的线程安全性有要求, 所以这里就实现了常用的几种线程安全的数据结构模板.使用时,直接传入模板类型即可.目前已经实现的结构有, 针对普通变量的DoubleBufferData, 针对队列的DoubleBufferedQueue, 针对数组的DoubleBufferedVector. ### 快速上手 所有的结构中为了方便使用都引用了下面的定义. 1. 线程锁 _data_mutex: 保证线程安全 2. 原子变量 _data_buffer_updated: 表示数据是否进行的更新, 相对于上一次使用get_data来说. 3. 原子变量 _has_data: 表示在构造出来之后,是否有进行过赋值, 即调用set_data 4. 赋值函数 set_data: 注入一个新的值, 更新_data_buffer_updated和_has_data 5. 取值函数 get_data: 取出当前值, 更新_data_buffer_updated为false 6. 窥视函数 peek_data: 区别于get_data, peek_data不会去更新内部状态, 只是偷看一眼数据. 7. 查看数据更新状态函数 is_updated 8. 查看是否已载入数据函数 has_data ### 仍需优化部分 1. DoubleBufferedQueue和DoubleBufferedVector, 对swap的实现部分, 存在争议, 具体参考定义部分, [double_buffered_queue](./double_buffered_queue.hpp), [double_buffered_vector](./double_buffered_vector.hpp)