Si noti che si tratta di una cache LRU thread-safe (non semplicemente una cache LRU come specificato in link ). Non è un duplicato della domanda di progettazione della cache di LRU in quanto vi sono alcuni aspetti spinosi di Locking Hashtable / Linkedlist (LL) che non sono affrontati in altre domande di progettazione di LRU multithread.
L'approccio accreditato su come rendere la cache di LRU thread-safe in C ++ sembra essere dappertutto. Ho notato alcuni link che menzionano il fatto che bloccare sia Hashtable / LL è ok, mentre altri non affrontano direttamente il problema in C ++ e discutono vagamente su vari modi per farlo.
-
Qualcuno può descrivere un approccio funzionale ed efficiente utilizzando blocchi che includono ciò che è bloccato e quando si implementa una versione multithread della cache della LRU in C ++ link quindi tutte le operazioni get / set sono O (1)?
-
in che modo le cache come memcached by Facebook implementano il supporto multithreading?