Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Mengapa nodejs tidak menggunakan multi-threading?
Dengan pembangunan Internet, JavaScript telah menjadi standard de facto untuk pembangunan web. Di bahagian pelayan, Node.js telah menjadi pilihan terbaik untuk aplikasi web dan digunakan secara meluas di seluruh dunia. Node.js ialah persekitaran berjalan JavaScript berdasarkan enjin Chrome V8. Berbanding dengan pelayan web lain, Node.js sangat baik dalam mengendalikan input/output (I/O) dan sering digunakan untuk membina aplikasi masa nyata seperti aplikasi sembang, aplikasi permainan, alatan kerjasama dalam talian, dsb.
Tidak seperti pelayan web tradisional, Node.js menggunakan model didorong acara berbenang tunggal. Ini bermakna Node.js boleh mengendalikan berbilang permintaan pelanggan secara serentak pada satu utas tanpa membuat utas atau proses baharu untuk setiap permintaan seperti pelayan web lain. Idea ini, yang dikenali sebagai "I/O tidak menyekat", adalah kunci kepada Node.js mengendalikan permintaan serentak yang tinggi pada pelayan.
Walau bagaimanapun, pada dasarnya, Node.js bukan satu-benang, ia boleh memanggil berbilang-benang modul C++ bukan-intensif CPU (seperti penyulitan, pemampatan, dll.), atau menggunakan modul proses pekerja (child_process) Jalankan berbilang proses dalam mod kelompok. Walau bagaimanapun, utas utama Node.js masih berjalan dengan cara berbenang tunggal dan menggunakan gelung peristiwa (Gelung Acara) untuk mengendalikan berbilang permintaan pada masa yang sama.
Jadi mengapa Node.js tidak menggunakan berbilang benang? Berikut ialah beberapa sebab:
Pembelongan tunggal Node.js sangat mudah dan stabil kerana tiada masalah kunci dan kebuntuan. Ini mengelakkan masalah ketekalan data apabila program beroperasi serentak dengan berbilang benang.
Pelayan yang menggunakan multi-threading perlu memperuntukkan jumlah memori yang tetap untuk setiap thread, dan pada pelayan concurrency tinggi, ini akan meningkat penggunaan ingatan. Node.js berjalan dengan cara berbenang tunggal dan boleh menggunakan sumber memori pelayan dengan mudah dan berkesan.
Apabila menggunakan berbilang urutan untuk memproses permintaan pelanggan, penukaran antara urutan akan menyebabkan overhed penukaran konteks yang mahal, sekali gus meningkatkan beban beban pelayan. Dalam Node.js, hanya satu utas utama sedang berjalan, menghapuskan overhed penukaran konteks, sekali gus meningkatkan prestasi pelayan.
Menggunakan berbilang urutan untuk mengendalikan permintaan pelanggan secara serentak mewujudkan cabaran untuk nyahpepijat dan penjejakan isu. Dalam Node.js, hanya satu permintaan diproses pada satu masa dan kami boleh menjejaki masalah dengan lebih mudah, mencari ralat dan membetulkannya.
Model benang tunggal Node.js sesuai untuk membina aplikasi yang sangat berskala. Jika aplikasi perlu mengendalikan lebih banyak permintaan, ia hanya perlu menambah proses pekerja dalam mod kluster, sekali gus meningkatkan kebolehskalaan aplikasi.
Ringkasnya, walaupun Node.js tidak mempunyai sokongan berbilang benang langsung, ia menyelesaikan masalah konkurensi tinggi melalui model benang tunggal yang mudah dan cekap. Node.js ialah pilihan yang bagus untuk aplikasi yang perlu mengendalikan sejumlah besar permintaan pada pelayan.
Atas ialah kandungan terperinci Mengapa nodejs tidak menggunakan multi-threading?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!