0Pricing
Dart Academy · درس

إنشاء العزلات وتمرير الرسائل

التواصل عبر SendPort وReceivePort

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

التحكم اليدوي

بالنسبة إلى العمال طويلَي العمر وكثيري التواصل، أنشئ isolate بنفسك باستخدام Isolate.spawn. وبذلك تتحكم في دورة حياتها بالكامل.

نقطة الدخول

يتطلب Isolate.spawn دالة على المستوى الأعلى لتكون نقطة الدخول، إضافةً إلى وسيط واحد ترسله إليها عند بدء التشغيل.

Isolate.spawn(worker, message);

تعرّف إلى ReceivePort

يمثل ReceivePort صندوق بريدك. تستمع إليه لاستقبال الرسائل التي ترسلها isolates أخرى إليك. 📥

final port = ReceivePort();
port.listen((msg) => print(msg));

تعرّف إلى SendPort

يكشف كل ReceivePort عن SendPort. وكل من يملك ذلك SendPort يستطيع وضع رسائل في صندوق بريدك.

final SendPort tx = port.sendPort;

تمرير المنفذ

لبدء التواصل، امنح isolate الجديدة كائن SendPort باعتباره وسيط spawn. والآن تعرف إلى أين ترسل الرد.

Isolate.spawn(worker, port.sendPort);

العامل يرد

داخل العامل، استخدم SendPort الذي استلمته لإرسال النتائج باستخدام send إلى isolate الرئيسية.

void worker(SendPort tx) {
  tx.send('done');
}

المصافحة

من الأنماط الشائعة إجراء مصافحة متبادلة: يرسل العامل SendPort الخاص به أولًا، كي يتمكن الطرفان من مراسلة أحدهما الآخر.

البيانات القابلة للإرسال فقط

يجب أن تكون الرسائل قابلة للإرسال: أرقامًا وسلاسل نصية وقوائم وخرائط وSendPorts. أما أشياء مثل الملفات المفتوحة أو الدوال فلا يمكنها عبور الحد الفاصل.

قراءة الردود

عند العودة إلى isolate الرئيسية، يُستدعى رد النداء listen الخاص بـ ReceivePort لكل رد. عالج الردود عند وصولها وبالترتيب.

إغلاق المنفذ

عند الانتهاء، استدعِ port.close(). إذ يُبقي ReceivePort المفتوح برنامجك قيد التشغيل، لذا يتيح إغلاقه إنهاء الأمور بطريقة سليمة.

إنهاء isolate

احتفظ بمرجع Isolate واستدعِ isolate.kill() لإيقاف عامل لم تعد بحاجة إليه. حرر موارده سريعًا.

تحقق سريع

على أي منفذ تستمع لاستقبال الرسائل؟

مراجعة

أنشئ isolate باستخدام Isolate.spawn، ثم مرر SendPort كي تتمكن isolates من مراسلة بعضها. أرسل البيانات القابلة للإرسال فقط، وأغلق المنافذ عند الانتهاء. ✅

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

هل درس «إنشاء العزلات وتمرير الرسائل» مجاني؟

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

ماذا ستتعلم في «إنشاء العزلات وتمرير الرسائل»؟

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

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

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

كم من الوقت يستغرق درس «إنشاء العزلات وتمرير الرسائل»؟

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

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

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

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

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