Архитектура x86 (32-битная). Конкретно процессор — AMD Phenom x4. Выравнивание стандартное — скажем, 4 байта. Считаем, что функция «вычислить» реентарабельна (по крайней мере, так должно быть в идеале — она ничего не пишет, только делает что-то из r/o входных данных). Двойная блокировка тут непригодна, надежда только на атомарность, и мой вопрос как раз в этом: а насколько атомарны операции «записать double» и «считать double»?
А с кодом чуть-чуть ошибся, но вроде нефатально:
double &x = кэш[i];
if (isnan(x)) x=вычислить(i);
return x;
Итак, автоповтором занимается КЛАВИАТУРА (по крайней мере AT- или PS/2-, про USB- не скажу). Так что реалистично — никак. Разве что вычитать задержки клавиатуры из системы и повторить их самостоятельно.