Skip to content

Instantly share code, notes, and snippets.

@lightyears1998
Created August 27, 2020 08:31
Show Gist options
  • Save lightyears1998/c090e3a681b659a3f365171beb68337c to your computer and use it in GitHub Desktop.
Save lightyears1998/c090e3a681b659a3f365171beb68337c to your computer and use it in GitHub Desktop.
Node.js 的 cluster 模块提供的语法糖
import cluster from "cluster"
function showEventsAndListener(processName: string) {
console.log(
`${processName} events and listeners:`,
process.eventNames().map(e => `${e.toString()}(${process.listenerCount(e)})`).join(', ')
)
}
if (cluster.isMaster) {
console.log(`Master is executing. PID=${process.pid} PPID=${process.ppid}`)
cluster.fork();
cluster.fork();
cluster.fork();
cluster.on('fork', (worker) => {
console.log(`#${worker.id} forked`)
showEventsAndListener('Master (when forked)');
})
cluster.on('listening', (worker) => {
console.log(`#${worker.id} listening`)
})
cluster.on('online', (worker) => {
console.log(`#${worker.id} online`)
showEventsAndListener('Master (when online)');
})
cluster.on('message', (worker) => {
console.log(`#${worker.id} messaged`)
})
cluster.on('exit', (worker, code, signal) => {
console.log(`#${worker.id} exit, code: ${code}, signal: ${signal}`)
showEventsAndListener('Master (when exit)');
})
cluster.on('setup', (settings) => {
console.log('setup:', settings);
})
cluster.on('disconnect', (worker) => {
console.log(`${worker.id} is disconnected.`);
showEventsAndListener('Master (when disconnect)');
});
showEventsAndListener('Master');
} else {
console.log(`Worker is executing. PID=${process.pid} PPID=${process.ppid}`)
showEventsAndListener(`Worker #${cluster.worker.id}`)
setTimeout(() => {
cluster.worker.disconnect();
process.exitCode = Math.floor(255 * Math.random());
}, 1000);
}
Master is executing. PID=12020 PPID=18936
Master events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
setup: {
args: [],
exec: 'c:\\Users\\lightyears\\Source\\test\\src\\index.ts',
execArgv: [
'C:\\Users\\lightyears\\AppData\\Local\\Yarn\\Data\\global\\node_modules\\ts-node\\dist\\bin.js'
],
silent: false
}
#1 forked
Master (when forked) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
setup: {
args: [],
exec: 'c:\\Users\\lightyears\\Source\\test\\src\\index.ts',
execArgv: [
'C:\\Users\\lightyears\\AppData\\Local\\Yarn\\Data\\global\\node_modules\\ts-node\\dist\\bin.js'
],
silent: false
}
#2 forked
Master (when forked) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
setup: {
args: [],
exec: 'c:\\Users\\lightyears\\Source\\test\\src\\index.ts',
execArgv: [
'C:\\Users\\lightyears\\AppData\\Local\\Yarn\\Data\\global\\node_modules\\ts-node\\dist\\bin.js'
],
silent: false
}
#3 forked
Master (when forked) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#1 online
Master (when online) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#2 online
Master (when online) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#3 online
Master (when online) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
Worker is executing. PID=11436 PPID=12020
Worker #1 events and listeners: newListener(3), removeListener(3), warning(1), internalMessage(2), error(1), message(1), disconnect(1)
Worker is executing. PID=8560 PPID=12020
Worker #3 events and listeners: newListener(3), removeListener(3), warning(1), internalMessage(2), error(1), message(1), disconnect(1)
Worker is executing. PID=6788 PPID=12020
Worker #2 events and listeners: newListener(3), removeListener(3), warning(1), internalMessage(2), error(1), message(1), disconnect(1)
1 is disconnected.
Master (when disconnect) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
3 is disconnected.
Master (when disconnect) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#1 exit, code: 33, signal: null
Master (when exit) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
2 is disconnected.
Master (when disconnect) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#3 exit, code: 114, signal: null
Master (when exit) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
#2 exit, code: 131, signal: null
Master (when exit) events and listeners: newListener(2), removeListener(2), warning(1), internalMessage(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment