node-routine

A library to implement Goroutine-Like API with worker threads.

Usage no npm install needed!

<script type="module">
  import nodeRoutine from 'https://cdn.skypack.dev/node-routine';
</script>

README

node-routine

npm npm

node-routine is a library to implement Goroutine-Like API with worker_threads.

Compared to using the worker threads low level API directly, node-routine can make your codes more elegantly, like:

await go(() => (Math.random()))

Documentation

Documentation

Architecture

Requirement

  • Nodejs >= 11.7
  • Nodejs >= 10.5 with --experimental-worker flag

Install

npm install -S node-routine

Quick Example

const { go, init, shutdown } = require('node-routine')

// init a worker threads pool
init({
  maxWorkerThreads: 2,
})

async function calc() {
  // every routine will be executed in worker threads pool
  const count = 10000
  const num = await go(() => {
    let total = 0
    for (let i = 0; i < count; ++i) {
      total += i
    }
    return total
  }, { count })

  return num
}

calc().then((total) => {
  console.log('Got', total)
  shutdown()
})

Benchmark

Benchmark Code

Env: Macbook Pro, 13-inch, 2018, 2.3 GHz Intel Core i5

Commend: npm run bench

  ✓ CPU intensive task using microjob (14ms)
  ✓ CPU intensive task using node-routine (4ms)
  ✓ IO intensive task using microjob (20163ms)
  ✓ IO intensive task using node-routine (5224ms)