1.0.6 • Published 2 years ago

@masx200/universal-thread-pool v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

universal-thread-pool

Universal thread pool 通用线程池

适用于 CPU 密集型的任务的 通用线程池

由于JavaScript有异步方式处理IO密集型任务,所以不应该在线程池中使用IO密集型任务.

可以与 comlink 配合使用实现,浏览器或者 denoweb worker 线程池,或者 nodejsworker_threads 线程池

https://www.npmjs.com/package/comlink

导入模块

deno

指定版本号

import {} from "https://deno.land/x/masx200_universal_thread_pool@1.0.5/mod.ts";
import {} from "https://cdn.jsdelivr.net/gh/masx200/universal-thread-pool@1.0.5/mod.ts";

node

import {} from "@masx200/universal-thread-pool";

createThreadPool:创建线程池,

接受必选参数create:创建抽象线程的函数

接受必选参数terminate:结束抽象线程的函数

接受可选参数maxThreads:线程池中最多的线程数,默认为 cpu 个数

接受可选参数minThreads:线程池中最少的线程数,默认为 1.

ThreadPool线程池接口

destroy:销毁线程池中所有线程

run:在线程池中使用一个线程运行指定的callback回调函数,并返回结果,可选第二个参数signal可以使用AbortSignal来提前终止线程的运行.

threads:可以查看所有的线程.

onPendingSizeChange:添加监听器callback,当正在运行的任务数改变时,监听器被调用,返回一个停止监听的函数。

onQueueSizeChange:添加监听器callback,当正在排队的任务数改变时,监听器被调用,返回一个停止监听的函数。

查看 web worker 例子

https://github.com/masx200/universal-thread-pool/tree/main/test/test.ts