标签: multithreading stl queue
为什么empty()中的std::queue函数不是线程安全的? (参见here。)const函数不应始终是线程安全的,因为它是只读的吗?
empty()
std::queue
const
类中可能有一些mutable变量可能由多个线程写入?
mutable
答案 0 :(得分:6)
如果对象从未任何方法进行修改,则不修改类数据的方法只是线程安全的。否则,另一个线程上的方法可以更改对象(在锁定下,正确)并在线程上调用queue::empty()而不获取锁定可能导致竞争条件(取决于其实现)。
queue::empty()