Léxico TI › Programación › False sharing

False sharing

Programación Svenska → Actualizado: 2026-08-15

Dos hilos escriben en variables distintas que casualmente caen en la misma línea de caché. El protocolo de coherencia invalida la línea entera en cada escritura y los hilos pelean por algo que en realidad no comparten.

El síntoma es un bucle paralelizado que va más lento cuantos más núcleos le das. Caso clásico: un array con un contador por hilo, long counters[8], donde los ocho caben en una única línea de 64 bytes. El arreglo es rellenar o alinear para que cada campo caliente tenga su propia línea: alignas(64) en C++, @Contended en Java (requiere -XX:-RestrictContended), #[repr(align(64))] en Rust. Localízalo con perf c2c — nunca lo adivines.

← Volver al léxico