Blocking I/O, işlem bitene kadar çağıran thread'i durdurur; non-blocking I/O ise hemen geri döner ve işlem tamamlanırken thread'in başka iş yapmasına izin verir. Sync ile async, aynı fikri API düzeyinde tanımlar.
Blocking I/O, işlem bitene kadar çağıran thread'i durdurur; non-blocking I/O ise hemen geri döner ve işlem tamamlanırken thread'in başka iş yapmasına izin verir. Sync ile async, aynı fikri API düzeyinde tanımlar.
read() üzerinde park eder. Basittir, ama thread tüm süre boyunca boştadır — N yavaş istemciye hizmet vermek için N thread'e ihtiyacınız vardır.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');
Bu, ölçeklenebilir sunucuların özüdür. Node.js ve nginx, tam olarak I/O non-blocking olduğu için az sayıda thread'de devasa bağlantı sayılarını idare eder — beklemek bir thread'i bağlamaz. Script'lerde basitlik için blocking çağrıları kullanın; yüksek eşzamanlılıklı ağ servisleri için non-blocking kullanın ve event loop'u asla CPU ağırlıklı işle bloklamayın.
Junior'dan Senior'a detaylı cevaplarla bir BT mülakat soruları kütüphanesi.
Bağış Yap