خوش آمدید

‏ "Async" یک مدل concurrency است که در آن چندین کار به طور هم‌زمان با اجرای هر کار تا زمانی که مسدود شود، اجرا می‌شود و سپس به کار دیگری که آماده ادامه دادن است سوئیچ می‌شود. این مدل اجازه می‌دهد تا تعداد بیشتری کار را روی تعداد محدودی از رشته‌ها اجرا کنید و به این دلیل است که سربار هر task معمولاً بسیار کم است و سیستم‌‌عامل‌ها معمولاً مقدماتی را برای شناسایی مؤثر I/O که قادر به ادامه هستند فراهم می‌کنند.

عملیات Rust asynchronous بر اساس "futures" است، که نشان‌دهنده کاری است که ممکن است در آینده تکمیل شود. future‌ها تا زمانی که علامت کامل بودنشان را ندهند، «polled» می‌شوند.

‏ Futureها توسط یک زمان‌بندی ناهمزمان نظارت می‌شوند و چندین زمان‌بندی مختلف در دسترس هستند.

مقایسه

  • پایتون مدل مشابهی را در «asyncio» خود دارد. با‌این‌حال، تایپ «Future» آن مبتنی بر callback است و poll نشده است. برنامه‌های Async Python به یک «حلقه» شبیه به runtime در Rust نیاز دارند.

  • این مورد شبیه "Promise" در جاوا اسکریپت است که دوباره مبتنی بر callback است. runtime زبان حلقه رویداد (event loop) را پیاده سازی می‌کند، بنابراین بسیاری از جزئیات واضح در Promise پنهان می‌شوند.

برنامه زمانی

با احتساب استراحت‌های ۱۰ دقیقه‌ای، این جلسه باید حدود ۳ ساعت و ۲۰ دقیقه طول بکشد. شامل موارد زیر است:

بخشمدت زمان
مبانی Async۳۰ دقیقه
کانال‌ها و Control Flow۲۰ دقیقه
Pitfallها۵۵ دقیقه
تمرین‌ها۱ ساعت و ۱۰ دقیفه