Pij*_*usn 7 c++ const list thread-safety
我想知道尺寸函数(大小,长度或其他)是否是线程安全的?根据我的理解,他们通常只返回一些私人会员.我真的怀疑他们做了任何计算.它们都被标记为const但是它们是线程安全的吗?例如std :: list :: size?
我有一个用于写入的锁保护功能和另一个用于读取(也是锁定保护)的功能但是我想知道我的计数功能是否也应该被锁定保护?IMO,看起来浪费了响应时间.我不认为它可能会破坏任何迭代器或者如果同时从列表中删除某个成员(尽可能相同)则会失败.
是的,它需要通过锁保护.假设您的实现std::list::size是32位值,但在您的平台上32位读取不是原子的,它们需要2个16位读取.在这种情况下,第二个线程可能会在第一次读取发生后中断读取大小的第一个线程,更新大小变量,然后当第二个16位读取发生时,您可能会得到一个真正混乱的大小值.
| 归档时间: |
|
| 查看次数: |
2960 次 |
| 最近记录: |