task-farm
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

task-farm

A dead simple and opinionated priority queue task farm.

Usage

Create a single file that configures your work farm.

// src/workfarm.ts
import { TaskFarm } from "task-farm";

// create a single module for task farm creation (so you can use this for the worker thread)
const farm = new TaskFarm<TaskType>({
  __filename, // pass this filename
  payloadSize: 0x10000, // allocate a single buffer to pass to the workers and back
  argv: process.argv,
  env: process.env,
  stdout: true,
  stderr: true,
});

farm.addTaskType(
  // TaskType here
  TaskType.Example,
  // Priority (lower means run sooner)
  1,
  // This function runs in the worker
  (buffer: Buffer, farm: TaskFarm<TaskType>) => {
    // buffer contains worker payload
    // write result data back to the same buffer
  },
  // This function runs in the main thread
  (buffer: Buffer, farm: TaskFarm<TaskType>) => {
    // buffer contains result of worker
    // copy data immediately
  },
);

// pass a buffer to the task
farm.delegate(TaskType.Example, Buffer.from([...data]));

// call setTimeout every 0 ms and tick the current thread (master and worker)
farm.autoTick();

Readme

Keywords

none

Package Sidebar

Install

npm i task-farm

Weekly Downloads

0

Version

0.0.1

License

MIT

Unpacked Size

36.8 kB

Total Files

34

Last publish

Collaborators

  • jtenner