【发布时间】:2010-12-04 19:32:46
【问题描述】:
为什么std::queue 中的empty() 函数不是线程安全的? (参见here。)const 函数不应该总是线程安全的,因为它是只读的吗?
也许类中有一些mutable 变量可能会被多个线程写入?
【问题讨论】:
-
只读函数本质上不是线程安全的。 如果其他线程没有写入,它们是安全的。
标签: multithreading stl queue
为什么std::queue 中的empty() 函数不是线程安全的? (参见here。)const 函数不应该总是线程安全的,因为它是只读的吗?
也许类中有一些mutable 变量可能会被多个线程写入?
【问题讨论】:
标签: multithreading stl queue
不修改类数据的方法只有在对象从不被any方法修改时才是线程安全的。否则,另一个线程上的方法可能会更改对象(在锁下,正确),并且在您的线程上调用 queue::empty() 而不获取锁可能会导致竞争条件(取决于其实现)。
【讨论】: