الدرس 11: المستودعات غير المتزامنة
استدعاءٌ حاجبٌ لقاعدة البيانات يُجمّد thread بأكمله حتى تعود الإجابة — وتحت حِمل حقيقي يعني ذلك خادمًا يختنق وشاشةً متجمّدة. في هذا الدرس نبني مستودعًا غير متزامن: واجهةً تُرجِع Task، ودوالَّ تنتظره باستخدام await دون أن تحجب أحدًا.
الدالة غير المتزامنة أشبه بجهاز النداء في المطعم: بدلًا من الوقوف والانتظار عند المنضدة، تأخذ الجهاز وتذهب لتفعل أمورًا أخرى — وحين تجهز الوجبة، يرنّ.
- المستودع غير المتزامن
- عقد وصول إلى بيانات تُرجِع كل دواله Task<T> — بحيث ينتظر المستدعون النتائج بـ await دون حجب thread.
- Task<T> — وعد بنتيجة
- يعود فورًا لحظة استدعاء دالة غير متزامنة؛ القيمة T نفسها لا تصبح متاحة إلا حين يكتمل العمل.
- await — انتظار دون حجب
- يُعلّق الدالة، ويحرّر الـ thread لأعمال أخرى، ويُستأنف من تلك النقطة مع النتيجة حين يكتمل الـ Task.