Blocking I/O stopt de aanroepende thread tot de operatie klaar is; non-blocking I/O keert onmiddellijk terug en laat de thread ander werk doen terwijl de operatie voltooit. Sync versus async beschrijft hetzelfde idee op API-niveau.
Blocking I/O stopt de aanroepende thread tot de operatie klaar is; non-blocking I/O keert onmiddellijk terug en laat de thread ander werk doen terwijl de operatie voltooit. Sync versus async beschrijft hetzelfde idee op API-niveau.
read() tot er data binnenkomt. Simpel, maar de thread is de hele tijd inactief — om N trage clients te bedienen heb je N threads nodig.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');
Dit is de kern van schaalbare servers. Node.js en nginx verwerken enorme aantallen connecties op weinig threads juist omdat I/O non-blocking is — wachten legt geen thread vast. Gebruik blocking calls voor eenvoud in scripts; gebruik non-blocking voor netwerkservices met hoge concurrency, en blokkeer nooit de event loop met CPU-zwaar werk.
Een bibliotheek met IT-sollicitatievragen met gedetailleerde antwoorden — van Junior tot Senior.
Doneren