El uso de RwLock en cargas de trabajo intensivas en lectura puede generar un coste de rendimiento significativo debido a la sobrecarga de las operaciones atómicas internas. Un análisis técnico demuestra que, en un escenario con 50 lectores concurrentes y un único escritor, la implementación basada en RwLock (usando la librería parking_lot) alcanza un throughput de lectura de 15.93k operaciones por segundo, con latencias p95 de 910 µs. En contraste, una estructura sin bloqueo basada en punteros atómicos (usando crossbeam_epoch) logra un throughput de 229.07k operaciones por segundo, reduciendo la latencia p95 a 49.84 µs.
La diferencia radica en la gestión de la concurrencia. RwLock requiere incrementar y decrementar un contador de lectores activo mediante operaciones compare-and-exchange y resta atómicas para cada elemento de la estructura de datos. En un bloque de 16.384 elementos, esto implica aproximadamente 524 millones de actualizaciones atómicas por segundo, lo que añade sobrecarga incluso sin contención real. Por el contrario, la solución sin bloqueo utiliza un guardado de época (epoch guard) único para todo el bloque. Esto permite que los lectores carguen punteros atómicos sin necesidad de gestionar el contador de lectores individualmente, eliminando la mayoría de las operaciones atómicas redundantes. Aunque el pinning de la época tiene su propia sobrecarga, el ahorro en las operaciones de bloqueo individual es determinante. Este caso ilustra que la elección entre bloqueo y estructuras sin bloqueo depende críticamente del patrón de lectura y la frecuencia de actualizaciones, y no siempre la solución más común es la más eficiente.
