Programación multihilos (threads) en Javascript

Introducción

La programación multihilos o «multithreading» es una técnica utilizada en la programación para dividir una tarea en múltiples subprocesos que se ejecutan simultáneamente en el mismo programa. En Javascript, el uso de hilos puede mejorar significativamente el rendimiento de las aplicaciones que realizan operaciones intensivas de procesamiento o interacción con el usuario. En este artículo, explicaremos cómo utilizar hilos en Javascript y cómo pueden mejorar el rendimiento de tus aplicaciones.

¿Qué son los hilos en Javascript?

Los hilos son subprocesos de ejecución que permiten a un programa realizar varias tareas al mismo tiempo. En Javascript, los hilos se crean mediante la clase Worker, que permite la creación de subprocesos que pueden comunicarse con el hilo principal mediante el uso de mensajes.

Creando un hilo en Javascript

Para crear un hilo en Javascript, se utiliza la clase Worker. El siguiente ejemplo muestra cómo crear un hilo y enviar un mensaje al mismo:

// Escuchamos los mensajes del hilo principal
onmessage = function(event) {
    // Obtenemos los datos enviados desde el hilo principal
    const data = event.data;
 
    // Realizamos la suma de los números
    const resultado = data.numero1 + data.numero2;
 
    // Enviamos la respuesta al hilo principal
    postMessage(resultado);
  };

En este ejemplo, el código del archivo «worker.js» escucha los mensajes enviados por el hilo principal y realiza la suma de dos números que se reciben en el mensaje. Luego, el resultado se envía de vuelta al hilo principal utilizando el método postMessage.

Es importante destacar que el código en el archivo «worker.js» no tiene acceso al DOM ni a otras funcionalidades del navegador que estén limitadas a un solo hilo. Esto se debe a que los hilos secundarios en Javascript no comparten la misma memoria que el hilo principal, lo que significa que no pueden acceder ni modificar las mismas variables ni objetos en el mismo tiempo que el hilo principal.

Ahora creamos en el código principal lo siguiente:

// Creamos un nuevo hilo
const worker = new Worker(‘worker.js’);

// Enviamos un mensaje al hilo
worker.postMessage(‘Hola mundo!’);

En el ejemplo anterior, se crea un nuevo hilo utilizando la clase Worker y se envía un mensaje al mismo utilizando el método postMessage.

Recibiendo mensajes desde un hilo Para recibir mensajes desde un hilo en Javascript, se utiliza el método onmessage. El siguiente ejemplo muestra cómo recibir un mensaje desde un hilo y mostrarlo en la consola:

// Creamos un nuevo hilo
const worker = new Worker(‘worker.js’);

// Recibimos un mensaje del hilo
worker.onmessage = function(event) {
  console.log(‘Mensaje recibido desde el hilo: ‘ + event.data);
};

En el ejemplo anterior, se crea un nuevo hilo utilizando la clase Worker y se define una función que se ejecutará cuando el hilo envíe un mensaje utilizando el método onmessage.

Comunicación bidireccional entre hilos

La comunicación bidireccional entre hilos en Javascript se realiza mediante el uso de mensajes. El siguiente ejemplo muestra cómo enviar un mensaje desde el hilo principal al hilo secundario y recibir una respuesta del mismo:

// Creamos un nuevo hilo
const worker = new Worker(‘worker.js’);

// Enviamos un mensaje al hilo
worker.postMessage(‘Hola mundo!’);

// Recibimos un mensaje del hilo
worker.onmessage = function(event) {
  console.log(‘Respuesta recibida desde el hilo: ‘ + event.data);
};

// Enviamos una respuesta al hilo
worker.postMessage(‘Hola de vuelta!’);

Conclusión

La programación multihilos es una técnica poderosa que puede mejorar significativamente el rendimiento de las aplicaciones de Javascript. El uso de hilos permite dividir las tareas en subprocesos que se ejecutan simultáneamente, lo que puede mejorar la velocidad de procesamiento y la capacidad de respuesta de las aplicaciones. Al utilizar la clase Worker de Javascript, se puede crear y comunicar con hilos secundarios de manera sencilla.

Deja un comentario