nodejs bukan multi-threaded, tetapi single-threaded; nodejs menggunakan mode non-blocking asinkron single-threaded. Karena mesin JavaScript, node adalah single-threaded secara default metode "I/O" yang digerakkan oleh peristiwa dan asinkron untuk mencapai lingkungan runtime konkurensi tinggi berulir tunggal.

Lingkungan pengoperasian artikel ini: Sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Node berulir tunggal dan menggunakan mode non-pemblokiran asinkron berulir tunggal.
Karena mesin JavaScript, node adalah thread tunggal secara default, dan aplikasi node.js tidak dapat menggunakan sumber daya multi-core.
Node.js menggunakan I/O yang digerakkan oleh peristiwa dan asinkron untuk mengimplementasikan lingkungan runtime berulir tunggal dan konkurensi tinggi. Single-threading berarti hanya satu hal yang dapat dilakukan pada waktu yang sama.
Nodejs mengimplementasikan asynchronous dan non-blocking:
Di nodejs, hanya eksekusi js yang sebenarnya merupakan thread tunggal, dan I/O jelas merupakan thread lain.
Thread eksekusi js adalah thread tunggal. Selama I/O yang diperlukan diteruskan ke libuv, ia akan segera kembali untuk melakukan hal lain, dan kemudian libuv akan menelepon kembali pada waktu yang ditentukan.
Secara detail, nodejs pertama-tama memanggilnya dari kode js dalam pengikatan simpul ke kode C/C, lalu merangkum sesuatu yang disebut "objek permintaan" dalam kode C/C dan meneruskannya ke libuv. Beberapa objek permintaan ini mirip dengan panggilan balik fungsi yang perlu dijalankan. Cukup jalankan panggilan balik ke libuv dan implementasikan panggilan balik setelah eksekusi.
Singkatnya, proses umum I/O asinkron adalah sebagai berikut.
1. Memulai panggilan I/O
Pengguna memanggil modul inti Node dari kode Javascript dan meneruskan parameter dan fungsi panggilan balik ke modul inti
Modul inti Node merangkum parameter yang diteruskan dan fungsi panggilan balik dalam objek permintaan.
Dorong objek permintaan ini ke kumpulan thread I/O untuk menunggu dijalankan;
Panggilan asinkron Javascript berakhir, dan thread Javascript terus melakukan operasi selanjutnya.
2. Jalankan panggilan balik
Setelah operasi I/O selesai, fungsi panggilan balik yang sebelumnya dienkapsulasi dalam objek permintaan diambil dan dijalankan untuk mencapai tujuan panggilan balik Javascript. (Rincian panggilan balik di sini dijelaskan di bawah)
Terlihat dari sini bahwa kita sebenarnya selalu salah memahami single thread Node.js.
Faktanya, thread tunggal mengacu pada thread tunggal di lingkungan runtime Javascript, dan Node.js tidak memiliki kemampuan untuk membuat thread baru saat menjalankan Javascript. Operasi aktual terakhir masih dilakukan di Libuv dan loop acaranya. Inilah sebabnya mengapa Javascript, bahasa single-thread, dapat mengimplementasikan operasi asinkron di Node.js. Keduanya tidak akan bertentangan.
Perluas pengetahuan Anda:
Ikhtisar Multithreading Node.js
Beberapa orang mungkin mengatakan bahwa meskipun Node.js adalah single-threaded, Node.js dapat menggunakan peristiwa siklik (Event Loop) untuk mengimplementasikan tugas eksekusi secara bersamaan. Menyelidiki esensinya, NodeJs sebenarnya menggunakan dua thread berbeda, satu adalah thread utama untuk memproses peristiwa loop, dan yang lainnya adalah beberapa thread tambahan di kumpulan Pekerja. Fungsi utama dan hubungan kedua thread ini adalah sebagai berikut:

Pembelajaran yang disarankan: "tutorial video nodejs"
Di atas adalah detail apakah nodejs bersifat multi-threaded. Untuk informasi lebih lanjut, harap perhatikan artikel terkait lainnya di situs ini!