0Pricing
Dart Academy · درس

استخدام Isolate.run لنقل العمل سريعًا

تشغيل دالة خارج العزل الرئيسي

استخدام Isolate.run لنقل العمل سريعًا درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

المدخل السهل

إنشاء isolates يدويًا أمر معقد قليلًا. ويُعد Isolate.run أبسط طريقة لنقل مهمة ثقيلة واحدة خارج main isolate. 🚀

ما الذي يفعله

ينشئ Isolate.run isolate جديدًا، ويشغّل دالتك فيه، ويعيد النتيجة، ثم يغلق isolate نيابةً عنك.

يعيد Future

لأن العمل يحدث في مكان آخر، يمنحك Isolate.run قيمة Future. ويمكنك استخدام await معه كما تفعل مع أي استدعاء async آخر.

Future<int> sumIt() => Isolate.run(() {
  var total = 0;
  for (var i = 0; i < 1000000; i++) total += i;
  return total;
});

انتظر النتيجة

استدعِه واستخدم await لانتظار الإجابة. وسيظل main isolate متاحًا للحفاظ على سلاسة واجهة المستخدم أثناء إجراء الحسابات.

final result = await Isolate.run(heavyTask);
print(result);

مرّر دالة على المستوى الأعلى

ينبغي أن تكون المهمة التي تشغّلها دالة top-level أو دالة static، أو closure بسيطة. وهذا يجعل إرسالها إلى isolate الجديد آمنًا.

التقط بحذر

تُنسخ أي قيمة تقوم closure بالتقاطها إلى isolate الجديد. لذلك اجعل البيانات الملتقطة صغيرة وخالية من العناصر التي لا يمكن إرسالها، مثل المقابس.

أرسل المدخلات

هل تحتاج إلى مدخلات؟ التقطها داخل closure أو مرّرها إليها. تقوم Dart بنسخها عبر isolates، لذلك يعمل isolate على نسخته الخاصة.

final big = await Isolate.run(() => parseJson(rawText));

أخرج النتائج

كل ما تعيده دالتك يصبح قيمة Future. وتُنسخ هذه القيمة تلقائيًا إلى main isolate.

تنتقل الأخطاء إلى الأعلى

إذا أطلق العمل استثناءً، فسيُرفض Future. أحط await بـ try/catch للتعامل مع حالات الفشل في الموضع الذي استدعيت فيه الدالة.

try {
  final r = await Isolate.run(risky);
} catch (e) {
  print('failed: $e');
}

تكلفة البدء

ينشئ Isolate.run isolate ويزيله في كل مرة. وينطوي ذلك على تكلفة إضافية، لذا يكون مفيدًا للعمل الثقيل فعلًا، لا للمهام الصغيرة.

متى يناسب الاستخدام

استخدم Isolate.run عندما تكون لديك مهمة واحدة كبيرة ومكتفية بذاتها. أما للتواصل المتبادل المستمر، فالاستخدام المباشر لـ isolates الكاملة أنسب.

تحقق سريع

ماذا يعيد لك Isolate.run؟

مراجعة

ينقل Isolate.run دالة واحدة ثقيلة إلى isolate أخرى، وينتظر Future الخاص بها، ثم ينسخ النتيجة ويعيدها وينظف الموارد. إنه أبسط طريق إلى المعالجة المتوازية. ✅

الأسئلة الشائعة

هل درس «استخدام Isolate.run لنقل العمل سريعًا» مجاني؟

نعم — نص درس «استخدام Isolate.run لنقل العمل سريعًا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «استخدام Isolate.run لنقل العمل سريعًا»؟

تشغيل دالة خارج العزل الرئيسي تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «استخدام Isolate.run لنقل العمل سريعًا»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا Isolates بدلًا من Threads
  2. استخدام Isolate.run لنقل العمل سريعًا
  3. إنشاء العزلات وتمرير الرسائل
  4. المهام كثيفة الحسابات دون تقطّع
← العودة إلى Dart Academy