Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda