Пул ниток, як коли і хто використовував:
По-перше, коли ми використовуємо / встановлюємо Node на комп’ютер, він запускає процес серед інших процесів, який називається процесом вузла в комп'ютері, і він продовжує працювати, поки ви не вб'єте його. І цей запущений процес - це наш так званий єдиний потік.
Таким чином, механізм одного потоку дозволяє легко блокувати додаток вузла, але це одна з унікальних особливостей, яку Node.js вносить у таблицю. Отже, знову ж таки, якщо ви запустите додаток для вузла, він запуститься лише в одному потоці. Незалежно від того, чи маєте ви один або мільйон користувачів одночасно звертатися до вашої програми.
Тож давайте розберемося, що саме відбувається в одному потоці nodejs, коли ви запускаєте додаток для вузла. Спочатку програма ініціалізується, потім виконується весь код верхнього рівня, а це означає, що всі коди, які не знаходяться в жодній функції зворотного виклику ( пам'ятайте, що всі коди все функції зворотного виклику будуть виконуватися під циклом подій ).
Після цього всі коди модулів виконуються, потім реєструють весь зворотний виклик, нарешті, цикл подій запускається для вашої програми.
Отже, як ми обговорюємо, перш ніж всі функції зворотного виклику та коди всередині цих функцій виконуватимуться в циклі подій. У циклі подій навантаження розподіляються по різних фазах. У всякому разі, я не збираюся тут обговорювати петлю подій.
Ну а для того, щоб краще зрозуміти пул Thread, я прошу вас уявити, що в циклі подій коди всередині однієї функції зворотного виклику виконуються після завершення виконання кодів всередині іншої функції зворотного виклику, тепер, якщо є якісь завдання, насправді занадто важкі. Потім вони заблокують наш nodejs єдиним потоком. Отож, саме там входить пул потоків, який подібно до циклу подій, надається Node.js бібліотекою libuv.
Отже пул потоків не є частиною самих nodejs, він надається libuv для вивантаження важких обов'язків на libuv, і libuv виконує ці коди у власних потоках, а після виконання libuv поверне результати події у циклі подій.
Пул ниток дає нам чотири додаткові нитки, ці повністю відокремлені від основної єдиної нитки. І ми можемо насправді налаштувати його до 128 потоків.
Отже всі ці нитки разом утворили пул ниток. і цикл подій може автоматично завантажувати важкі завдання в пул потоків.
Весела частина - це все відбувається автоматично за лаштунками. Це не ми, розробники, які вирішують, що йде в пул потоків, а що ні.
Є багато завдань, що надходять до пулу потоків, наприклад,
-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups