README.md 1.3 KB
Newer Older
xiaonuo911teamo's avatar
init...  
xiaonuo911teamo 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## 自定义数据类型介绍

多线程并行是本框架的特点之一, 所以通常都会对变量的线程安全性有要求, 所以这里就实现了常用的几种线程安全的数据结构模板.使用时,直接传入模板类型即可.目前已经实现的结构有, 针对普通变量的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)