2013-02-10 14 views
9

Potrzebuję biblioteki buforowania w C++, która działa trochę tak, jak w przypadku Guave's Ładowanie pamięci podręcznej.Zalecenia dotyczące pamięci podręcznej Open Source w języku C++

Powinien on zawierać następujące elementy:

  • bez blokowania dostępu
  • czas eksmisja oparta
  • oparty rozmiar eksmisja

Mam spojrzał na STL, Boost i przeszukiwane wokół, ale Nie mogę znaleźć niczego z tą funkcjonalnością.

+0

Muszę przyznać, że od razu pomyślałem, że pamiętam, ale jest bardziej odpowiedni do udostępniania wielu serwerów. Nie wiem, czy istnieje wersja w procesie. –

+0

Wszystko, czego naprawdę potrzebujesz to tabela mieszająca i dwie listy podwójnie powiązane, aby efektywnie wdrożyć pamięć podręczną. Sprawdź w książce systemu operacyjnego lub w Internecie, jak wdrożyć pamięć podręczną LRU, a następnie możesz ekstrapolować rozwiązanie do eksmisji na podstawie rozmiaru i czasu. – selbie

+2

@sebie, jestem świadomy, że mógłbym napisać to sam, ale najlepiej chciałbym znaleźć dojrzałą, dobrze przetestowaną bibliotekę, która była używana przez wiele różnych projektów i jest "zahartowana w boju". – user1610694

Odpowiedz

5

Zapoznaj się z POCO. Wierzę, że jego caching framework będzie pasować do twoich potrzeb.

ExpireLRUCache<int, string> cache(
           1024, // cacheSize 
           600000 // expiration (10 minutes) 
); 

cache.add(1, "Cached string 1"); 
cache.add(10, "Cached string 10"); 

Sleep(601000); 

Shared_ptr<string> pVal = cache.get(10); 
assert(pVal.isNull()); // the element has expired 
+1

to zbliża się do tego, czego potrzebuję dzięki. Też potrzebuję tego by być nieblokującym, ale być może będę musiał to zapewnić. Pozostawię pytanie otwarte na razie w nadziei, że już może ono istnieć. – user1610694

Powiązane problemy