- Este artículo analiza los desafíos de usar Rust en software de espacio de usuario con concurrencia a gran escala.
- El modelo asíncrono de Rust está diseñado para manejar dos conceptos clave de la computación moderna: concurrencia y paralelismo.
- El paralelismo implica ejecutar código al mismo tiempo en varios CPU.
- La concurrencia implica separar un problema, dividirlo en partes independientes y ejecutarlas sin importar el orden o con un orden parcial.
- El artículo destaca las limitaciones de usar varios procesos para concurrencia debido al costoso costo de la comunicación entre procesos.
- Los hilos, que son procesos que comparten la misma memoria, se presentan como una alternativa, pero pueden provocar problemas complejos como condiciones de carrera y bloqueos mutuos.
- El artículo de 1978 de Tony Hoare, "Communicating Sequential Processes", propuso usar colas o canales para que los hilos se envíen mensajes entre sí, ofreciendo varias ventajas como aislamiento similar al de los procesos y depuración más sencilla.
- La biblioteca estándar de Rust incluye canales en
std::sync::mpsc::sync_channel.
- Sin embargo, para problemas que requieren un alto nivel de concurrencia, como un servidor web conectado a decenas de miles de usuarios, los hilos podrían no ser suficientes.
- Para estas situaciones, Rust usa el modelo "async/await", en el que cuando una función se marca como asíncrona devuelve un futuro o promesa sobre el que se puede esperar para producir un resultado.
- A pesar de sus ventajas, Rust asíncrono presenta desafíos, como la necesidad de convencer al compilador de que todo estará bien, algo que puede ser difícil con hilos sin procesar.
- Se propone el uso de "conteo de referencias atómico", o Arc, como solución, pero no es una panacea porque puede generar problemas similares a los de un recolector de basura.
- El artículo concluye sugiriendo que, a pesar de las fortalezas de Rust en otras áreas, quizá no sea la herramienta óptima para software de espacio de usuario con concurrencia a gran escala.
1 comentarios
Opinión en Hacker News
Arcde Rust no es algo desconocido, sino que depende de dónde y cómo lo mantienes, y sugiere que el autor está intentando forzar su modelo mental previo sobre Rust.