參考返回值我有一個非常相似的問題已經問2012年臨界區,並在C++
Critical Sections and return values in C++
我想訪問一個容器線程安全的藏漢而是通過引用返回緩存的版本。
struct Container {
const Data& getSomeData() const {
EnterCriticalSection(& myCritSec);
if (update) {
cache.calulatefromcontainer();
}
// fill retobj with data from structure
LeaveCriticalSection(& myCritSec);
return cache;
}
private:
mutable Data cache;
};
問題是,「返回緩存」行不再受到保護。是否有可能通過引用返回「緩存」線程安全?
返回對可修改數據的引用基本上是對線程安全容器的禁用。這裏並沒有多少意思。 – SergeyA