Blocking I/O operation শেষ না হওয়া পর্যন্ত calling thread থামিয়ে দেয়; non-blocking I/O সঙ্গে সঙ্গে ফিরে আসে এবং operation সম্পূর্ণ হওয়ার সময় thread-কে অন্য কাজ করতে দেয়। Sync বনাম async একই ধারণাকে API স্তরে বর্ণনা করে।
Blocking I/O operation শেষ না হওয়া পর্যন্ত calling thread থামিয়ে দেয়; non-blocking I/O সঙ্গে সঙ্গে ফিরে আসে এবং operation সম্পূর্ণ হওয়ার সময় thread-কে অন্য কাজ করতে দেয়। Sync বনাম async একই ধারণাকে API স্তরে বর্ণনা করে।
read()-এ পার্ক করে। সহজ, কিন্তু thread পুরো সময় অলস থাকে — N ধীর client পরিবেশন করতে আপনার 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');
এটি scalable server-এর মূল। Node.js এবং nginx অল্প thread-এ বিশাল connection সংখ্যা সামলায় ঠিক এই কারণে যে I/O non-blocking — অপেক্ষা করা একটি thread আটকে রাখে না। script-এ সরলতার জন্য blocking call ব্যবহার করুন; high-concurrency network service-এর জন্য non-blocking ব্যবহার করুন, এবং CPU-ভারী কাজ দিয়ে কখনো event loop block করবেন না।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন