-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.min.js
More file actions
1 lines (1 loc) · 1.21 KB
/
Copy pathindex.min.js
File metadata and controls
1 lines (1 loc) · 1.21 KB
1
var ThreadPoolLite=function(){"use strict";let a=URL.createObjectURL(new Blob(["(function(){self.addEventListener(\"message\",e=>{let result;try{result=eval(e.data)}catch(a){return void setTimeout(function(){throw a})}result instanceof Promise?result.then(a=>{self.postMessage(a)}).catch(a=>{setTimeout(function(){throw a})}):self.postMessage(result)})})();"]));return class{constructor(b=navigator.hardwareConcurrency){let c=[],d=[],f=new WeakMap,g=a=>{if(0<d.length){let b=d.shift();a.postMessage(b[0]),f.set(a,b[1])}else this.working=this.working.filter(b=>a!==b),c.push(a),f.set(a,null)};for(let d,e=0;e<b;e++)d=new Worker(a),c[e]=d,d.onmessage=a=>{f.get(d).resolve(a.data),g(d)},d.onerror=a=>{f.get(d).reject(a.message),g(d)};this.tasks=f,this.worker=c,this.queue=d,this.working=[]}run(a){let b={resolve:null,reject:null},c=new Promise((a,c)=>{b.resolve=a,b.reject=c});if(this.queue.push(["("+a.toString()+")()",b]),0<this.worker.length){let a=this.worker.pop(),b=this.queue.shift();a.postMessage(b[0]),this.working.push(a),this.tasks.set(a,b[1])}return c}terminate(){for(let a in this.working)a instanceof Worker&&a.terminate();this.working=[]}getActiveCount(){return this.working.length}getIdleCount(){return this.worker.length}}}();