Threads store their own qdb. It gets updated when new questions are added to reduce message sizes between threads

This commit is contained in:
mrfry 2020-12-19 11:31:12 +01:00
parent 906ab8ee62
commit 68dcbff846
5 changed files with 56 additions and 141 deletions

View file

@ -39,7 +39,7 @@ export function doALongTask(obj: any): Promise<any> {
})
}
export function initWorkerPool(): void {
export function initWorkerPool(initData: any): void {
if (workers && pool) {
logger.Log('WORKER AND POOL ALREADY EXISTS', logger.GetColor('redbg'))
return
@ -48,7 +48,7 @@ export function initWorkerPool(): void {
const factory = {
create: function() {
const currInd = workers.length
const worker = getAWorker(currInd)
const worker = getAWorker(currInd, initData)
workers.push(worker)
return {
worker: worker,
@ -71,21 +71,19 @@ export function initWorkerPool(): void {
pool = genericPool.createPool(factory, opts)
}
export function msgAll(data: any): void {
export function msgAllWorker(data: any): void {
workers.forEach((worker) => {
worker.postMessage({
type: 'update',
data,
})
worker.postMessage(data)
})
}
// ---------------------------------------------------------------------------
function getAWorker(i) {
function getAWorker(i, initData) {
const worker = workerTs(workerFile, {
workerData: {
workerIndex: i,
initData: initData,
},
})
@ -105,7 +103,10 @@ function getAWorker(i) {
})
worker.on('exit', (code) => {
logger.Log(`[MAIN]: worker #${i} exit code: ${code}`)
logger.Log(
`[MAIN]: worker #${i} exit code: ${code}`,
code === 0 ? logger.GetColor('redbg') : logger.GetColor('green')
)
})
return worker
}