Blocking I/O menghentikan thread pemanggil sehingga operasi selesai; non-blocking I/O kembali serta-merta dan membiarkan thread melakukan kerja lain sementara operasi selesai. Sync berbanding async memerihalkan idea yang sama pada aras API.
Blocking I/O menghentikan thread pemanggil sehingga operasi selesai; non-blocking I/O kembali serta-merta dan membiarkan thread melakukan kerja lain sementara operasi selesai. Sync berbanding async memerihalkan idea yang sama pada aras API.
read() sehingga data tiba. Mudah, tetapi thread melahu sepanjang masa itu — untuk melayan N pelanggan yang lambat anda memerlukan N thread.Blocking: ──[ wait for disk ]── (thread stuck, does nothing)
Non-blocking: ──▶ returns now; event loop notified when ready
// Blocking: nothing else runs until the file is read
const data = fs.readFileSync('big.txt');
// Non-blocking: thread keeps going; callback fires later
fs.readFile('big.txt', (err, data) => { /* handle later */ });
// or async/await on top of non-blocking primitives
const data2 = await fs.promises.readFile('big.txt');
Ini ialah teras pelayan yang berskala. Node.js dan nginx mengendalikan bilangan sambungan yang besar pada sedikit thread justeru kerana I/O adalah non-blocking — menunggu tidak mengikat thread. Gunakan panggilan blocking untuk kesederhanaan dalam skrip; gunakan non-blocking untuk perkhidmatan rangkaian berketerentakan tinggi (high-concurrency), dan jangan sekali-kali menyekat event loop dengan kerja berat-CPU.
Pustaka soalan temu duga IT dengan jawapan terperinci — daripada Junior hingga Senior.
Derma