Advertisement
Guest User

worker

a guest
Jan 24th, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict"
  2.  
  3. const { workerData, parentPort } = require('worker_threads');
  4.  
  5. let id = workerData.id;
  6. let inArr = workerData.arr;                                       // общий для всех воркеров массив
  7.  
  8. console.log(`Worker ${id} is active.`);
  9.  
  10. parentPort.on('message',function(message){
  11.   if (message === "exit") {
  12.     parentPort.close();
  13.   } else {
  14.     let f = 0;                                                    // Просто считаем фиббоначу хз чего много раз. Чтобы проц заебался хоть чуть чуть.
  15.     for (let i = 100;i > 1; i--){
  16.       for (let j = 0; j < inArr.length; j++){
  17.         f = fib(message + randomInt(i) + inArr[j]);               // Что бы было больше смысла считаем учитывая значения "общего массива" и переданного значения
  18.       }
  19.     }
  20.     parentPort.postMessage({"id": id, "data": f});
  21.     setTimeout(() => parentPort.postMessage(`ready`), 1);         // говорим, что свободны и хотим ещё поработать.
  22.   }
  23. });
  24.  
  25. setTimeout(() => parentPort.postMessage(`ready`), 1);             // для инициализации воркера в основном процессе.
  26.  
  27. function randomInt(max) {
  28.   return Math.floor(Math.random() * max);
  29. }
  30.  
  31. function fib(num){                                                // считает число Фиббоначи
  32.     let a = 1;
  33.     let b = 0;
  34.     let temp;
  35.     while( num >= 0 ){
  36.       temp = a;
  37.       a = a + b;
  38.       b = temp;
  39.       num--;
  40.     }
  41.     return b;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement