Rumah > Artikel > hujung hadapan web > Adakah nod semua berjalan dengan benang tunggal?
Nod berjalan dalam satu utas, menggunakan mod tidak sekatan tak segerak berutas tunggal; berjalan pada utas utama, dan operasi tak segerak yang lain juga dilaksanakan oleh utas bebas Pada masa yang sama, nod berbenang tunggal secara lalai, dan "node.js" tidak boleh menggunakan sumber berbilang teras.
Persekitaran pengendalian tutorial ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Apabila bercakap tentang nod, kita boleh memikirkan perkataan seperti benang tunggal, IO tak segerak dan dipacu peristiwa. Perkara pertama yang perlu dijelaskan ialah sama ada nod benar-benar satu-benang Jika ia adalah satu-benang, maka di manakah IO tak segerak dan acara berjadual (setTimeout, setInterval, dll.) dilaksanakan.
Sebenarnya, secara tegasnya, nod bukanlah satu-benang. Terdapat banyak jenis benang dalam nod, termasuk: Benang pelaksanaan enjin JSBenang pemasa (setTimeout, setInterval)Benang http tak segerak (ajax)Apa yang biasa kita panggil single thread bermakna hanya terdapat satu enjin js dalam nod yang berjalan pada thread utama. IO asynchronous lain dan benang berkaitan dipacu peristiwa menggunakan libuv untuk melaksanakan himpunan benang dalaman dan penjadualan benang. Terdapat Gelung Peristiwa dalam libv, dan beralih melalui Gelung Peristiwa boleh mencapai kesan yang serupa dengan pelbagai benang. Ringkasnya, Event Loop mengekalkan tindanan pelaksanaan dan baris gilir acara Jika IO tak segerak dan fungsi pemasa ditemui dalam tindanan pelaksanaan semasa, fungsi panggil balik tak segerak ini akan dimasukkan ke dalam baris gilir acara. Selepas pelaksanaan timbunan pelaksanaan semasa selesai, fungsi panggil balik tak segerak dalam baris gilir acara dilaksanakan dalam susunan tertentu daripada baris gilir acara.
Dalam rajah di atas, daripada timbunan pelaksanaan, kepada baris gilir acara, dan akhirnya fungsi panggil balik dilaksanakan dalam susunan tertentu dalam baris gilir acara, keseluruhan proses adalah versi ringkas Event Loop. Selain itu, apabila fungsi panggil balik dilaksanakan, timbunan pelaksanaan juga akan dijanakan fungsi tak segerak mungkin bersarang di dalam fungsi panggil balik, yang bermaksud timbunan pelaksanaan bersarang.
Maksudnya, utas tunggal dalam nod bermakna enjin js hanya berjalan pada satu-satunya operasi tak segerak yang lain juga mempunyai utas bebas untuk dilaksanakan Melalui Gelung Peristiwa yang serupa dilaksanakan. Penukaran konteks benang dan penjadualan kumpulan benang. Benang adalah proses terkecil, jadi nod juga merupakan satu proses. Ini menerangkan sebab nod adalah satu-benang dan satu-proses. Pembelajaran yang disyorkan: "tutorial video nodejs
"Atas ialah kandungan terperinci Adakah nod semua berjalan dengan benang tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!