Blocking I/O menghentikan thread pemanggil sampai operasi selesai; non-blocking I/O kembali segera dan membiarkan thread melakukan pekerjaan lain sementara operasi selesai. Sync vs async menggambarkan ide yang sama pada level API.
Blocking I/O menghentikan thread pemanggil sampai operasi selesai; non-blocking I/O kembali segera dan membiarkan thread melakukan pekerjaan lain sementara operasi selesai. Sync vs async menggambarkan ide yang sama pada level API.
read() sampai data tiba. Sederhana, tetapi thread menganggur sepanjang waktu itu — untuk melayani N klien lambat Anda butuh 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 adalah inti dari server yang scalable. Node.js dan nginx menangani jumlah koneksi yang sangat besar pada sedikit thread justru karena I/O bersifat non-blocking — menunggu tidak mengikat sebuah thread. Gunakan panggilan blocking demi kesederhanaan dalam script; gunakan non-blocking untuk layanan jaringan berkonkurensi tinggi, dan jangan pernah memblokir event loop dengan pekerjaan berat CPU.
Perpustakaan pertanyaan wawancara IT dengan jawaban mendetail — dari Junior hingga Senior.
Donasi