Jes*_*man 13 c++ multithreading thread-safety
我正在开发一个需要的程序,std::map特别是这样的程序map<string,map<string,int>>- 它意味着像银行变化率 - 第一个字符串是原始货币,第二个映射中的一个是所需的一个,int是它们的速率.整个地图都是只读的.我还需要互斥锁吗?我对整个线程的安全性感到有点困惑,因为这是我的第一个更大的多线程程序.
Bau*_*gen 14
如果您正在谈论标准std::map†并且没有线程写入它,则不需要同步.没有写入的并发读取很好.
但是,如果至少有一个线程在地图上执行写操作,则确实需要某种保护,如互斥锁.
请注意,std::map::operator[]计为写入,因此请使用std::map::at(或者std::map::find如果密钥可能不存在于地图中).您可以通过仅引用共享映射来使编译器保护您免受意外写入const map&.
†澄清了OP中的情况.为了完整起见:注意其他类可能有mutable成员.对于那些人来说,即使通过const&也可能引入一场比赛.如有疑问,请查看文档或使用其他内容进行并行编程.
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |