Concurrency in NodeJS - SingaproeJS

Published on: Wednesday, 13 March 2019

Speaker: Kok Chee Kean

NodeJS has fantastic I/O performance for a seemingly single-threaded computing model due to its ability to handle such tasks asynchronously. But this fails for CPU-bound tasks that block threads. Before the current NodeJS LTS version, computationally heavy tasks could be farmed out to child processes, taking advantage of multicore CPUs, but processes do not share memory and inter-process communication adds significant overhead. Multithreading support landed in NodeJS as of v10.5.0, and is still flagged as an experimental API. We can now process tasks in separate threads with shared memory, but this power does not come for free. We'll compare the implementation and performance of a multithreaded NodeJS web server with that of some other industry solutions, and see how we can manage shared memory and orchestrate threads using buffers and atomics.

Chee Kean is a software engineer from the Maltem Consulting Group and uses NodeJS extensively for pet projects.

Sample Code:

Event Page:

Produced by Engineers.SG