Blocking I/O husimamisha thread inayoita hadi operation ikamilike; non-blocking I/O inarudi mara moja na kuiruhusu thread kufanya kazi nyingine wakati operation inakamilika. Sync dhidi ya async huelezea wazo lile lile katika kiwango cha API.
Blocking I/O husimamisha thread inayoita hadi operation ikamilike; non-blocking I/O inarudi mara moja na kuiruhusu thread kufanya kazi nyingine wakati operation inakamilika. Sync dhidi ya async huelezea wazo lile lile katika kiwango cha API.
read() hadi data ifike. Rahisi, lakini thread iko bila kazi muda wote — kuhudumia clients N wa polepole unahitaji threads N.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');
Hii ni kiini cha servers zinazoweza kuongezeka (scalable). Node.js na nginx hushughulikia idadi kubwa ya connections kwenye threads chache hasa kwa sababu I/O ni non-blocking — kusubiri hakushikilii thread. Tumia blocking calls kwa urahisi katika scripts; tumia non-blocking kwa network services za concurrency ya juu, na kamwe usizuie event loop kwa kazi nzito ya CPU.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia