Вы упоминаете о желании решить проблемы масштабируемости с помощью «поточно-ориентированной» альтернативы. «Потокобезопасность» здесь означает, что структура допускает попыток одновременного доступа, поскольку она не будет повреждена при одновременном использовании без внешней синхронизации. Однако такая терпимость не обязательно помогает улучшить «масштабируемость». В самом простом, хотя обычно ошибочном, подходе вы попытаетесь внутренне синхронизировать свою структуру и все же оставить неатомарные операции check-then-act небезопасными.
Кэши LRU требуют, по крайней мере, некоторой осведомленности об общей структуре. Им нужно что-то вроде количества членов или размера членов, чтобы решить, когда выселять, а затем они должны быть в состоянии скоординировать выселение с одновременными попытками чтения, добавления или удаления элементов. Попытка уменьшить синхронизацию, необходимую для одновременного доступа к «основной» структуре, противоречит вашему механизму выселения и вынуждает вашу политику выселения быть менее точной в своих гарантиях.
В текущем принятом ответе упоминается "когда вы хотите выселить запись". В этом и заключается загвоздка. Как вы знаете, когда вы хотите выселить запись? Какие еще операции вам нужно приостановить, чтобы принять это решение?