habe ich eine sehr similiar Frage 2012.Kritische Abschnitte und Rückgabewert durch Bezugnahme in C++
Critical Sections and return values in C++
schon gefragt Ich mag würde einen Container Thread-sicher aswell zuzugreifen, sondern eine im Cache gespeicherte Version durch Verweis zurückgeben .
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;
};
Das Problem ist, dass "Return-Cache" -Linie nicht mehr geschützt ist. Ist es möglich, "Cache" thread sicher als Referenz zurückzugeben?
Die Rückgabe eines Verweises auf änderbare Daten ist grundsätzlich kein Problem für threadsichere Container. Nicht viel, um hier zu deplazieren. – SergeyA