Ndoshta nuk është e qartë nga vetë pyetja se çfarë po kërkoj këtu, kështu që më lejoni të sqaroj. Si një ushtrim në të njëjtën kohë, unë jam duke luajtur me shkrimin e një cache që duhet të jetë i aksesueshëm nga kërkesa të shumta të njëkohshme. Përmbajtja e memories është e tipit ndërfaqe{}, kështu që mund të përfshijë çdo gjë, duke përfshirë feta, harta dhe struktura. Kur kap diçka me metodën "Get", e mbyll atë ndërsa e lexoj dhe më pas e kthej përmbajtjen dhe e përfundoj me një RUnlock të shtyrë.
Kjo funksionon mirë për numrat dhe vargjet dhe çdo vlerë tjetër që kopjohet automatikisht në kthim. Por unë jam i shqetësuar se fetat, hartat dhe strukturat nuk kopjohen në të vërtetë, kështu që gjëja e kthyer, nëse lexohet ose modifikohet sikur të ishte një kopje, në të vërtetë do të ndryshonte të dhënat në cache dhe duke e bërë këtë jashtë një mutex.
Sigurisht, ky është një problem në kushte gare. Kështu që unë nuk dua të kthej diçka nga Get që nuk është e sigurt për t'u ndryshuar dhe më pas të kaloj në një metodë Set për ta përditësuar. Pra, këtu janë pyetjet:
1) A kam të drejtë duke supozuar se këto lloje të të dhënave paraqesin probleme për një skenar si ky?
2) Si mund të shkohet për zgjidhjen e kësaj çështjeje, në mënyrë që të krijohet një metodë Get, vlerat e së cilës mund të manipulohen lirisht pa frikën e dështimit në kushte gare?