5
爲什麼empty()
函數在std::queue
中不是線程安全的? (請參閱here。)不應該const
函數總是線程安全的,因爲它是隻讀的?爲什麼std :: queue :: empty()不是線程安全的?不應該const函數是線程安全的?
也許可能有一些mutable
變量在類中可能會被幾個線程寫入?如果對象是從未通過任何方法修改
爲什麼empty()
函數在std::queue
中不是線程安全的? (請參閱here。)不應該const
函數總是線程安全的,因爲它是隻讀的?爲什麼std :: queue :: empty()不是線程安全的?不應該const函數是線程安全的?
也許可能有一些mutable
變量在類中可能會被幾個線程寫入?如果對象是從未通過任何方法修改
方法不修改類的數據僅僅是線程安全的。否則,另一個線程上的方法可能會更改對象(正確鎖定下),並在您的線程上調用queue::empty()
而不會獲取該鎖定可能會導致爭用條件(取決於其實現)。
只讀函數本質上不是線程安全的。他們是安全的*如果沒有其他線程正在進行寫作*。 – jalf 2010-12-04 19:37:23