Kumpulan benang bagaimana kapan dan siapa yang digunakan:
Pertama ketika kita menggunakan / menginstal Node di komputer, itu memulai proses antara proses lain yang disebut proses node di komputer, dan itu terus berjalan sampai Anda mematikannya. Dan proses yang berjalan ini adalah apa yang kami sebut sebagai utas tunggal.
Jadi mekanisme utas tunggal memudahkan untuk memblokir aplikasi node tetapi ini adalah salah satu fitur unik yang dibawa Node.js ke tabel. Jadi, sekali lagi jika Anda menjalankan aplikasi node Anda, itu akan berjalan hanya dalam satu thread. Tidak masalah jika Anda memiliki 1 atau jutaan pengguna yang mengakses aplikasi Anda pada saat yang bersamaan.
Jadi mari kita pahami apa yang terjadi di single thread nodejs saat Anda memulai aplikasi node. Pada awalnya program diinisialisasi, kemudian semua kode tingkat atas dijalankan, yang berarti semua kode yang tidak ada di dalam fungsi panggilan balik ( ingat semua kode di dalam semua fungsi panggilan balik akan dieksekusi di bawah loop peristiwa ).
Setelah itu, semua kode modul dieksekusi kemudian daftarkan semua callback, akhirnya event loop dimulai untuk aplikasi Anda.
Jadi seperti yang kita bahas sebelumnya, semua fungsi dan kode callback di dalam fungsi tersebut akan dijalankan di bawah event loop. Dalam event loop, beban didistribusikan dalam fase yang berbeda. Bagaimanapun, saya tidak akan membahas tentang event loop di sini.
Nah untuk pemahaman yang lebih baik tentang Thread pool I meminta Anda untuk membayangkan bahwa dalam event loop, kode di dalam satu fungsi callback dijalankan setelah menyelesaikan eksekusi kode di dalam fungsi callback lain, sekarang jika ada beberapa tugas yang sebenarnya terlalu berat. Mereka kemudian akan memblokir utas tunggal nodejs kami. Jadi, di situlah kumpulan utas masuk, yang seperti loop peristiwa, disediakan untuk Node.js oleh perpustakaan libuv.
Jadi kumpulan utas bukan bagian dari nodej itu sendiri, itu disediakan oleh libuv untuk memindahkan tugas berat ke libuv, dan libuv akan mengeksekusi kode-kode itu di utasnya sendiri dan setelah eksekusi libuv akan mengembalikan hasilnya ke acara di loop acara.
Kumpulan benang memberi kita empat utas tambahan, yang benar-benar terpisah dari utas tunggal utama. Dan kami benar-benar dapat mengkonfigurasinya hingga 128 utas.
Jadi semua utas ini bersama-sama membentuk kumpulan utas. dan event loop kemudian dapat secara otomatis memindahkan tugas berat ke kumpulan thread.
Bagian yang menyenangkan adalah semua ini terjadi secara otomatis di belakang layar. Bukan kami pengembang yang memutuskan apa yang masuk ke kumpulan utas dan apa yang tidak.
Ada banyak tugas yang masuk ke kumpulan utas, seperti
-> All operations dealing with files
->Everyting is related to cryptography, like caching passwords.
->All compression stuff
->DNS lookups