Conteo de Referencias No Atómico de shared_ptr de C++: Una Sorpresa en Microbenchmark

2025-08-31
Conteo de Referencias No Atómico de shared_ptr de C++: Una Sorpresa en Microbenchmark

Una microbenchmark que compara estructuras de datos de Rust y C++ reveló un comportamiento inesperado en `shared_ptr` de C++. En entornos de un solo hilo, GNU libstdc++ optimiza el conteo de referencias de `shared_ptr` para que no sea atómico si no se importa `pthread_create`. Esta optimización de rendimiento, aunque generalmente segura, puede provocar problemas en escenarios poco comunes, como cuando una biblioteca de enlace dinámico es cargada por un programa de enlace estático. El autor investigó otras implementaciones de C++ (libcxx y Visual C++) y finalmente resolvió la discrepancia de rendimiento haciendo referencia a `pthread_create` en su microbenchmark. El descubrimiento destaca la complejidad de las optimizaciones de bajo nivel y sus posibles consecuencias imprevistas.

Desarrollo