Uso de concurrencia en Rust
Clase 6 de 12 • Curso de Gestión de Servidores con Rust
Contenido del curso
Clase 6 de 12 • Curso de Gestión de Servidores con Rust
Contenido del curso
Antes de pasar a crear un servidor que soporte múltiples peticiones, daremos un repaso rápido al manejo de concurrencia dentro de Rust y la creación de hilos.
La programación concurrente, donde diferentes partes de un programa se ejecutan de manera independiente, y la programación paralela , donde diferentes partes de un programa se ejecutan al mismo tiempo, son cada vez más importantes a medida que más computadoras aprovechan sus múltiples procesadores.
Rust pretende ser un lenguaje con muy buen soporte para la concurrencia y paralelismo flexible, que permitan poderosas API sin perder ninguna garantía de seguridad de hilos (o seguridad de memoria).
Los errores de seguridad de la memoria y los errores de concurrencia a menudo se reducen al código de acceso a los datos cuando no debería. El arma secreta de Rust es la ownership (propiedad), una disciplina para el control de acceso que los programadores de sistemas intentan seguir, pero que el compilador de Rust comprueba estáticamente por ti.
Esto significa que puede elegir entre una amplia variedad de paradigmas (paso de mensajes, estado compartido, sin bloqueo, puramente funcional), y Rust lo ayudará a evitar dificultades comunes.
Algunos ejemplos de concurrencia en Rust:
Todos estos beneficios provienen del modelo de ownership (propiedad) de Rust y, de hecho, los bloqueos, canales, estructuras de datos sin bloqueo, etc. se definen en bibliotecas, no en el lenguaje principal. Eso significa que el enfoque de concurrencia de Rust es abierto.
La programación concurrente viene en muchos estilos, pero uno particularmente simple es el paso de mensajes, donde los hilos o actores se comunican enviando mensajes entre sí.
En nuestra siguiente clase hablaré sobre la creación de hilos y el envío de datos dentro de nuestro programas, en estas clases puedes trabajar en tu ambiente local ya instalado o puedes usar Rust Playground.
Dime en los comentarios, ¿Qué tanto sabes sobre el tema de concurrencia?.
Aitor Zaldua
Frank Moreno
Roberto Antonio Berrospe Machin
Gerardo Alberto Soto Alvarez del Castillo
Concurrencia es, básicamente, el futuro de la programación. Aprovechar todos los cores de un procesador, ejecutar multiples partes de un programa sin data race y sin que la memoria se vuelva un poco loca por los datos que recibe y nos cree problemas de seguridad, pues entiendo que es en lo que se está ahora.
Por lo menos, para mí, es el motivo para meterse de lleno ya con Rust ya que promete programación concurrente y paralelismo, y eso puede suponer un gran ahorro de costes para las empresas.
No es el futuro. Esto tiene décadas. Solo que uno no se suele preocupar de esto hasta que llegamos a un punto en donde se necesita mayor rendimiento y aprovechamiento de los cores.
Leí algo sobre el tema, y también que hay montones de crates que ayudan a "sacarle el jugo" a todo esto. Por cierto, https://rocket.rs parece ser una muy buena alternativa a lo que sería, flask de python? La verdad muy contento de cómo viene la cosa. A seguir aprendiendo...
Por la década de 1980, la empresa Rockwell International que hacia productos Aeroespaciales y Electrónica fabrico los primeros procesadores MOS 6502 de 8 bits (MOS por sus siglas: metal-oxide-semiconductor ) que contenía 2 núcleos en un solo chip.
En general, los microprocesadores multinúcleo permiten que un dispositivo computacional exhiba una cierta forma del paralelismo a nivel de thread (thread-level parallelism) (TLP) sin incluir múltiples microprocesadores en paquetes físicos separados. Esta forma de TLP se conoce a menudo como multiprocesamiento a nivel de chip (chip-level multiprocessing) o CMP.