c++ - 我是否需要通过锁来保护对 Boost MultiIndex 索引(索引本身)的访问?
问题描述
假设我有一个 boost::multi_index_container 并想要访问它的索引
boost::multi_index_container< ... > bmi;
// lock here?
auto &index = boost::multi_index::get<0>(bmi); // <-- does this call need to be protected by a lock?
// or is it sufficient to lock here?
// access the index (need to have the lock here)
当多个进程/线程访问 multi_indesx_container 时,我需要使用互斥锁(或类似的东西)。但是我是否也需要保护获取索引本身?我猜不是,但在文档中找不到保证。
解决方案
尽管它没有在任何地方记录,但它get()
是一个静态转换操作,它本质上是线程安全的。
推荐阅读
- python - 在 python 中共享记录器
- conda - 对于声明为本地的规则,未在 snakemake 中激活 Conda 环境
- node.js - 我无法在 Xubuntu 20.04 上安装 heapdump
- java - 如何使用 getScaleController() 和 PinchGesture?
- reactjs - React Hook SetState 导致无限循环
- javascript - 有限状态算法
- laravel - 在 laravel 应用程序、Apache、Ubuntu 20.04 上安装 Certbot 软件并配置 HTTPS 后 HTTPS:// 链接断开 | 数字海洋
- python - 四面体的交点
- javascript - 在 JavaScript 中编写三元运算符的另一种方法
- python - 为什么变量赋值有时不适用于列表