চ্যাপ্টার ৪
Async & Await (বিরিয়ানি অর্ডার)
(ব্লকিং বনাম নন-ব্লকিং এর গল্প)
"রেস্টুরেন্টে গিয়ে বিরিয়ানি অর্ডার দিয়ে কি কাউন্টারে দাঁড়িয়ে থাকিস? না!
তুই টোকেন নিয়ে টেবিলে এসে বসে মোবাইল চাপিস। বিরিয়ানি হলে ওয়েটার ডাক দেয়।
এটাই হলো Asynchronous Programming।"
⛔ Synchronous (Block)
লাইনে দাঁড়িয়ে থাকা। যতক্ষণ বাবুর্চি রান্না শেষ না করছে, ততক্ষণ তুই নড়তেও পারবি না, মোবাইলও টিপতে পারবি না। পুরো সিস্টেম জ্যাম (Blocked)।
✅ Asynchronous (Non-Block)
অর্ডার দিয়ে টোকেন নেওয়া। ব্যাকগ্রাউন্ডে রান্না চলছে, সামনে তুই ফ্রি (Main Thread Free)। অন্য কাস্টমরের সাথে কথা বল, মোবাইল টেপ—কোনো সমস্যা নাই।
Await শেষ হলে রেজাল্ট রিটার্ন করে
👨💻 C# Async Code Example
// মামা, এখানে 'async' আর 'await' কিবোর্ড ব্যবহার করবি
public async Task<string> OrderBiryaniAsync()
{
Console.WriteLine("অর্ডার পৌঁছাইছে... রান্না শুরু!");
// বিরিয়ানি হতে ৫ সেকেন্ড সময় লাগবে (Fake Delay)
// await মানে: আমি অন্য কাজ করি, তুমি রান্না শেষ করো।
await Task.Delay(5000);
return "এই নেন মামা, গরম বিরিয়ানি! 🍗";
}
// মেইন মেথড থেকে কল দেওয়া
public async Task Main()
{
Console.WriteLine("১. কাউন্টারে গেলাম...");
string khabar = await OrderBiryaniAsync();
Console.WriteLine("২. খাওয়া শুরু: " + khabar);
}
🧠 মগজ ধোলাই (Async Quiz)
বিরিয়ানি অর্ডার দিয়ে টেবিল বসে মোবাইল টেপা (অপেক্ষা করা) - এটা প্রোগ্রামিংয়ের ভাষায় কী?