Blocking I/O calling thread ਨੂੰ ਉਦੋਂ ਤੱਕ ਰੋਕ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ operation ਪੂਰਾ ਨਹੀਂ ਹੁੰਦਾ; non-blocking I/O ਤੁਰੰਤ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ ਅਤੇ thread ਨੂੰ ਹੋਰ ਕੰਮ ਕਰਨ ਦਿੰਦਾ ਹੈ ਜਦਕਿ operation ਪੂਰਾ ਹੁੰਦਾ ਹੈ। Sync ਬਨਾਮ async API ਪੱਧਰ 'ਤੇ ਇਹੀ ਵਿਚਾਰ ਬਿਆਨ ਕਰਦੇ ਹਨ।
Blocking I/O calling thread ਨੂੰ ਉਦੋਂ ਤੱਕ ਰੋਕ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ operation ਪੂਰਾ ਨਹੀਂ ਹੁੰਦਾ; non-blocking I/O ਤੁਰੰਤ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ ਅਤੇ thread ਨੂੰ ਹੋਰ ਕੰਮ ਕਰਨ ਦਿੰਦਾ ਹੈ ਜਦਕਿ operation ਪੂਰਾ ਹੁੰਦਾ ਹੈ। Sync ਬਨਾਮ async API ਪੱਧਰ 'ਤੇ ਇਹੀ ਵਿਚਾਰ ਬਿਆਨ ਕਰਦੇ ਹਨ।
read() ਉੱਤੇ ਉਦੋਂ ਤੱਕ ਰੁਕਿਆ ਰਹਿੰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਡੇਟਾ ਨਹੀਂ ਆਉਂਦਾ। ਸਧਾਰਨ, ਪਰ thread ਪੂਰਾ ਸਮਾਂ ਵਿਹਲਾ ਰਹਿੰਦਾ ਹੈ — N ਹੌਲੀ clients ਦੀ ਸੇਵਾ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ N threads ਦੀ ਲੋੜ ਹੈ।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');
ਇਹ scalable servers ਦਾ ਧੁਰਾ ਹੈ। Node.js ਅਤੇ nginx ਥੋੜ੍ਹੇ threads ਉੱਤੇ ਵੱਡੀ ਗਿਣਤੀ ਵਿੱਚ connections ਬਿਲਕੁਲ ਇਸ ਲਈ ਸੰਭਾਲਦੇ ਹਨ ਕਿਉਂਕਿ I/O non-blocking ਹੈ — ਉਡੀਕ ਇੱਕ thread ਨੂੰ ਨਹੀਂ ਬੰਨ੍ਹਦੀ। scripts ਵਿੱਚ ਸਾਦਗੀ ਲਈ blocking calls ਵਰਤੋ; high-concurrency network services ਲਈ non-blocking ਵਰਤੋ, ਅਤੇ CPU-heavy ਕੰਮ ਨਾਲ event loop ਨੂੰ ਕਦੇ block ਨਾ ਕਰੋ।
ਵਿਸਤ੍ਰਿਤ ਜਵਾਬਾਂ ਨਾਲ IT ਇੰਟਰਵਿਊ ਸਵਾਲਾਂ ਦੀ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ — ਜੂਨੀਅਰ ਤੋਂ ਸੀਨੀਅਰ ਤੱਕ।
ਦਾਨ ਕਰੋ