Uso de concurrencia en Rust

Clase 6 de 12Curso de Gestión de Servidores con Rust

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:

  1. Los canales de Rust imponen el aislamiento del hilo.
  2. "Bloquear datos, no código" se aplica en Rust.
  3. La seguridad de los hilos no es solo documentación; es ley.
  4. Incluso las formas más atrevidas de compartir marcos de pila entre subprocesos están garantizadas con seguridad 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?.