Node.js adalah satu-benang secara lalai Oleh kerana enjin JavaScript, node.js menggunakan mod tanpa sekatan tak segerak satu-benang tidak boleh menggunakan sumber berbilang teras -pustaka pihak yang boleh menyediakan sokongan berbilang Thread disediakan, tetapi utas utama adalah satu thread dan operasi dalam utas utama disekat secara serentak.
Persekitaran pengendalian tutorial ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Node.js berbenang tunggal secara lalai dan node.js menggunakan mod tidak menyekat tak segerak berbenang tunggal.
node.js menggunakan mod tidak menyekat tak segerak berbenang tunggal. Urutan tunggalnya merujuk kepada utas tunggal persekitaran berjalan Javascriptnya sendiri tidak mempunyai keupayaan untuk mencipta utas baharu apabila Javascript dilaksanakan melalui Libuv dan gelung peristiwanya.
Nod hanyalah bahawa utas utama adalah satu utas dan operasi dalam utas utama disekat secara serentak. Tetapi ia membuang semua operasi tak segerak ke kumpulan benang IO, dan utas utama berinteraksi dengan kumpulan benang IO melalui mekanisme tinjauan acara tertentu untuk mendapatkan data tak segerak.
Prestasi node.js bukanlah yang tertinggi Kerana enjin JavaScript, node.js adalah satu-benang secara lalai dan aplikasi node.js tidak boleh menggunakan sumber berbilang teras.
Walau bagaimanapun, terdapat perpustakaan pihak ketiga yang menyediakan sokongan berbilang benang, tetapi ia tidak lancar. Node.js menyelesaikan kesesakan I/O (berbanding dengan teknologi tradisional, sekatan segerak memanggil benang buangan Ia tidak meningkatkan kelajuan I/O, tetapi penjadualan sumber adalah lebih cekap. Jika kelajuan I/O tidak diselesaikan, node.js hanya boleh mengatakan bahawa ia boleh mengendalikan banyak permintaan pada masa yang sama, tetapi masa tindak balas bagi setiap permintaan masih begitu lama, atau lebih lama lagi.
Nod adalah satu-benang, jadi bagaimana ia mengendalikan permintaan serentak yang tinggi?
Bergantung pada dipacu acara.
Setiap proses Node.js hanya mempunyai satu utas utama melaksanakan kod atur cara, membentuk tindanan konteks pelaksanaan.
Selain utas utama, "Baris gilir Acara" juga dikekalkan. Apabila permintaan rangkaian pengguna atau operasi tak segerak yang lain tiba, nod akan memasukkannya ke dalam Baris Gilir Acara Pada masa ini, ia tidak akan dilaksanakan serta-merta, dan kod itu tidak akan disekat sehingga kod utas utama dilaksanakan. lengkap.
Selepas pelaksanaan kod utas utama selesai, dan kemudian melalui Gelung Peristiwa, iaitu mekanisme gelung peristiwa, mula mendapatkan semula acara pertama dari permulaan Baris Peristiwa, peruntukkan utas daripada kumpulan benang untuk melaksanakan acara ini, dan kemudian Turun dan terus keluarkan acara kedua, dan kemudian peruntukkan benang daripada kumpulan benang untuk dilaksanakan, kemudian yang ketiga, dan yang keempat. Urutan utama secara berterusan menyemak sama ada terdapat acara yang tidak dilaksanakan dalam baris gilir acara sehingga semua acara dalam baris gilir acara telah dilaksanakan Selepas itu, apabila acara baharu ditambahkan pada baris gilir acara, urutan utama akan dimaklumkan untuk membawanya keluar pesan dan serahkan kepada EventLoop untuk diproses. Apabila acara dilaksanakan, utas utama akan dimaklumkan, utas utama akan melaksanakan panggilan balik dan utas akan dikembalikan ke kumpulan utas.
Urut utama terus mengulangi langkah ketiga di atas.
Benang tunggal NodeJ hanyalah utas utama Pada asasnya operasi tak segerak diselesaikan oleh kumpulan utas Node menyerahkan semua operasi menyekat kepada kumpulan utas dalaman untuk pelaksanaan, dan hanya bertanggungjawab untuk penjadualan perjalanan pergi dan balik. , tiada operasi I/O sebenar dilakukan, dengan itu mencapai I/O tidak sekatan tak segerak Ini adalah intipati sifat berbenang tunggal dan dipacu peristiwa.
Pembelajaran yang disyorkan: "tutorial video nodejs"
Atas ialah kandungan terperinci Adakah node.js berbenang tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!