Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
Cómo compartir singleton a través de múltiples subprocesos en nodejs

Estoy tratando de hacer que un singleton funcione en varios subprocesos en node/ts. Pero por alguna razón, solo el bucle de eventos principal tiene acceso a él. ¿Hay alguna manera de que pueda actualizar un singleton en el ciclo principal y que los cambios se reflejen en un subproceso de trabajo? Aquí está el código -

data_source.ts

 class DataSource { private _data: any constructor() { this._data = [] } set(data: any) { this._data.push(data) } get(id: any) { return this._data.find((d: any) => d.id === id) } } const instance = new DataSource(); Object.freeze(instance) export default instance

index.ts

 let workerpool = require('workerpool') import DataSource from './data_source' import { test } from './worker' console.log(DataSource) function main () { let pool = workerpool.pool() pool.exec(test, []) setInterval(() => { DataSource.set({id: 'asd'}) }, 1000) } main()

worker.ts

 import DataSource from './data_source' export function test() { setInterval(() => { console.log(DataSource) console.log("test") }, 500) }

Como puede ver, main.ts ejecuta un trabajador que "debería" registrar en la consola DataSource singleton cada 0,5 s, mientras que main.ts agrega un nuevo elemento a DataSource cada segundo.

Esto funciona si emito la siguiente línea desde el trabajador - console.log(DataSource) , una cadena de "prueba" se registra correctamente cada 0,5 s. Pero, cuando intento consolar el registro de DataSource en mi subproceso de trabajo, se registra correctamente solo la primera vez, y después parece que el intervalo del bucle principal se hace cargo por completo del singleton y rompe por completo al trabajador, y deja de registrar cualquier cosa. .

Estoy tratando de usar singleton como programa, bucle principal como programador y trabajador como ejecutor (que verifica el programa cada segundo).

¡Gracias!

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda