0.8.4 • Published 2 years ago

threadman v0.8.4

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago
 _   _                        _
| | | |                      | |
| |_| |__  _ __ ___  __ _  __| |_ __ ___   __ _ _ __
| __| '_ \| '__/ _ \/ _` |/ _` | '_ ` _ \ / _` | '_ \
| |_| | | | | |  __/ (_| | (_| | | | | | | (_| | | | |
 \__|_| |_|_|  \___|\__,_|\__,_|_| |_| |_|\__,_|_| |_|

Still in early stages of development. Email me any suggestions you have on varvolta@gmail.com

Worker threads made easy.

Create and execute tasks in real cpu threads in NodeJS. (ES6 imports for now)

Threadman doesn't use any dependencies. It's based on workers.

Installation

npm i threadman

Syntax

new Thread(fn, args, options?, priority?).run(callback)

Basic usage

import { Thread } from 'threadman'

let number = 10

const fn = (number) => number + 20
const args = [number]
const callback = (result) => number = result

new Thread(fn, args).run(callback)

'fn' runs in a sandbox and returns the result in callback. After you get the result you can access the main scope again and reassign variables. 'fn' can be async.

Using modules

import { Thread } from 'threadman'
import md5 from 'md5'

let string

const fn = (md5, string) => md5(string)
const args = [md5, string]
const callback = (result) => string = result

new Thread(fn, args).run(callback)

Using pools

import { Thread, Pool } from 'threadman'
import md5 from 'md5'

let data

const fn = (md5, string) => md5(string)
const args = [md5, string]
const callback = (results) => data = results

const pool = new Pool()

const thread1 = new Thread(fn, args)
const thread2 = new Thread(fn, args)

pool.queue(thread1)
pool.queue(thread2)

pool.run(callback)

Callback returns all the results from thread runs in an array

Catching errors

new Thread(fn, args).run(runCallback).catch(catchCallback)

Config

import { Dispatcher } from 'threadman'

// Sets maximum parallel threads count.
// Defaults to system with 'os.cpus().length'
Dispatcher.config.threads.maxParallel = os.cpus().length

// Automatically stops the thread after returning the result.
// Defaults to 'true'.
Dispatcher.config.autoStop = true

// Enables thread logs.
// Defaults to 'false'.
Dispatcher.config.logs.enabled = false

// Sets the logger.
// Defaults to 'console'
Dispatcher.config.logs.logger = console

Events

Subscribing to events

const thread = new Thread(fn, args)

thread.on('start', onStartFn)
thread.on('stop', onStopFn)
thread.on('done', onDoneFn)
thread.on('error', onErrorFn)

thread.run(callback)

Unsubscribe with

thread.off('start', onStartFn)
thread.off('stop', onStopFn)
thread.off('done', onDoneFn)
thread.off('error', onErrorFn)

Unsubscribe from all events

thread.offAll()

Documentation to be filled more soon

0.8.4

2 years ago

0.7.2

2 years ago

0.5.4

2 years ago

0.7.1

2 years ago

0.5.3

2 years ago

0.7.4

2 years ago

0.7.3

2 years ago

0.5.5

2 years ago

0.7.0

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.7.9

2 years ago

0.7.6

2 years ago

0.5.8

2 years ago

0.7.5

2 years ago

0.5.7

2 years ago

0.7.8

2 years ago

0.7.7

2 years ago

0.5.9

2 years ago

0.8.1

2 years ago

0.6.3

2 years ago

0.4.5

2 years ago

0.8.0

2 years ago

0.6.2

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.3.7

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.0

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago