Walaupun Node.js berbenang tunggal, ia boleh mensimulasikan berbilang benang dalam pelbagai cara: 1. Benang pekerja: cipta benang secara bebas untuk melaksanakan tugas; 2. Modul kluster: mencipta berbilang proses pekerja untuk pemprosesan selari; : jadualkan tugas ke Dalam gelung acara, perlaksanaan tanpa sekatan.
Bagaimana untuk melaksanakan multi-threading dalam Node.js?
Node.js ialah persekitaran berjalan satu benang, yang bermaksud ia hanya boleh mengendalikan satu tugas pada satu masa. Walau bagaimanapun, benang berbilang boleh disimulasikan oleh:
1 Benang Pekerja
Node.js 10.5 dan kemudiannya memperkenalkan utas Pekerja, yang membolehkan penciptaan utas bebas untuk melaksanakan tugas yang memakan masa, dengan itu membebaskan utas utama . Benang pekerja mempunyai kelebihan berikut:
2. Modul Kluster
Modul Kluster membolehkan penciptaan berbilang proses pekerja, setiap satu dengan gelung acaranya sendiri. Proses utama bertanggungjawab untuk memberikan tugas kepada proses pekerja, dan proses pekerja bertanggungjawab untuk memproses tugas. Modul Kluster mempunyai kelebihan berikut:
3. Gelung acara
Pengendalian Node.js adalah berdasarkan gelung acara, iaitu gelung berjalan berterusan yang sentiasa menyemak sama ada terdapat tugasan yang belum selesai. Tugasan boleh menjadi operasi I/O, pemasa atau kod pengguna. Pelaksanaan tanpa sekatan dicapai dengan menjadualkan tugas yang memakan masa ke dalam gelung acara, membebaskan utas utama.
Pelaksanaan khusus
Gunakan benang Pekerja:
<code class="js">// 创建一个 worker 线程 const worker = new Worker('./worker.js'); // 监听 worker 线程的消息 worker.addEventListener('message', (event) => { console.log('Received message from worker:', event.data); }); // 向 worker 线程发送消息 worker.postMessage({ message: 'Hello from main thread!' });</code>
Gunakan modul Kluster:
<code class="js">// 创建一个 cluster 监听器 const cluster = require('cluster'); // 如果是主进程,则创建 worker 进程 if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) { cluster.fork(); } } else { // 如果是 worker 进程,则执行任务 console.log(`Worker ${cluster.worker.id} started`); performTask(); }</code>
Gunakan gelung acara: reee
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan multi-threading dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!