部分文章内容为网上转载整合,并在博客中记录,以便查阅,部分原文出处未进行标注,如有侵权,请联系我,谢谢。邮箱地址:gnivor@163.com ►►►需要气球么?请点击我吧!

C++笔记-brpc flatmap

待整理
不错的参考资料:
https://www.hotaery.top/brpc/BRPC源码分析之容器篇——FLATMAP和FLATSET/#FlatMapIterator
https://blog.csdn.net/guangyacyb/article/details/104047730
https://illx10000.github.io/2019/01/20/12.html#2-flatmap
https://blog.csdn.net/whizchen/article/details/9286557

注意:
FlatMap的模板声明如下,FlatMap将会根据_Sparse的布尔值来决定选择迭代器类型。当_Sparse为false时将会使用FlatMapIterator作为其迭代器,这也是默认行为,当_Sparsetrue时,将会使用SparseFlatMapIterator作为迭代器类型,需要注意的是,SparseFlatMapIterator作为迭代器类型时,FlatMap不支持多线程访问、插入或者删除。

template <typename _K, typename _T,
          typename _Hash = DefaultHasher<_K>,
          typename _Equal = DefaultEqualTo<_K>,
          bool _Sparse = false>
class FlatMap;

多线程迭代FlatMap可能遇到不的问题
save_iteratorrestore_iterator
用于在多线程环境中用于将迭代大map的关键部分划分为较小的部分。 “不一致”是指:
在迭代过程中添加的元素可能会丢失。
某些元素可能会多次迭代。
调整地图大小时,迭代会在开始时重新开始。

posted @ 2020-06-15 16:47  流了个火  阅读(539)  评论(0编辑  收藏  举报
►►►需要气球么?请点击我吧!►►►