Diferencia entre los métodos spawn() y fork() en Node.js

En este artículo, discutiremos la diferencia entre los métodos spawn() y fork() en Node.js. Ambas son formas de crear procesos secundarios en Node.js para manejar cargas de trabajo cada vez mayores.

Método Spawn(): el proceso de generación inicia un comando en un nuevo proceso. Podemos pasarle el comando como argumento. El resultado de la función de generación es una instancia de proceso secundaria que implementa EventEmitterAPI. Los controladores para eventos se pueden adjuntar o registrar en la instancia secundaria creada. Algunos de los eventos que se pueden adjuntar o registrar en esas instancias secundarias son desconexión, error, cierre y mensaje, etc.

Parámetros: este método acepta los siguientes parámetros.

  • comando: Acepta comandos para ejecutar como una string.
  • args: Es una lista de argumentos de string. El valor predeterminado es una array vacía.
  • opciones: este objeto de opciones puede tener varias propiedades como stdio, uid, gid, shell, etc.
    • shell: Acepta un valor booleano. Si es verdadero, ejecuta el comando dentro de un shell. El shell diferente se puede especificar como una string. El valor predeterminado es falso, lo que implica que no hay shell.

Valor devuelto: Devuelve una instancia del proceso hijo.

  
 

Ejemplo: Este es un ejemplo muy simple y general del uso de spawn. Primero necesitábamos generar mediante la desestructuración, luego creamos un proceso secundario pasando argumentos. Luego registre un evento stdout en ese proceso secundario.

Javascript

const { spawn } = require('child_process');
const child = spawn('dir', ['D:\\empty'], { shell: true });
 
child.stdout.on('data', (data) => {
  console.log(`stdout ${data}`);
});

Producción:

El mensaje enviado desde child.js se está imprimiendo en file server.js debido al uso del proceso secundario de bifurcación.

Diferencia entre el proceso hijo de Spawn y Fork:

Aparecer 

Tenedor

Esto comienza a enviar datos a un proceso principal desde el proceso secundario tan pronto como el proceso secundario comienza a ejecutarse. Esto no envía datos automáticamente, pero podemos usar un proceso de nombre de módulo global para enviar datos desde el proceso secundario y en el módulo principal, usando el nombre del proceso secundario para enviar al proceso secundario.
Crea un nuevo proceso a través de un comando en lugar de ejecutarlo en el mismo proceso de Node. Hace varios procesos individuales (procesos secundarios), pero todos ellos se ejecutan en el mismo proceso de Node que el principal.
En esto, no se crea ninguna nueva instancia V8. En esto, se crea una nueva instancia V8.
Se utiliza cuando queremos que el proceso secundario devuelva una gran cantidad de datos al proceso principal. Se utiliza para separar las tareas de cálculo intensivo del bucle de eventos principal.

Publicación traducida automáticamente

Artículo escrito por namancourses y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *