بروتوثريد

يُعدّ الخيط الأولي آلية منخفضة التكلفة للبرمجة المتزامنة .

تعمل الخيوط الأولية كخيوط خفيفة الوزن أو روتينات فرعية بدون استخدام المكدس ، مما يوفر سياق حظر بتكلفة منخفضة باستخدام الحد الأدنى من الذاكرة لكل خيط أولي (في حدود بايت واحد).

تُستخدم الخيوط الأولية لتحقيق شكل من أشكال التزامن غير المُقاطع، يُعرف باسم تعدد المهام التعاوني ، وبالتالي، لا يحدث تبديل سياق عند التنازل لخيط آخر. داخل الخيط الأولي، يتم التنازل باستخدام جهاز داف ضمن دالة الخيط ومتغير خارجي يُستخدم ضمن عبارة التبديل . يسمح هذا بالانتقال (الاستئناف) من حالة التنازل عند استدعاء دالة أخرى. ولحظر الخيوط ، يمكن حماية حالات التنازل هذه بشرط، بحيث تؤدي الاستدعاءات المتتالية لنفس الدالة إلى التنازل ما لم يكن الشرط صحيحًا.

تتميز الخيوط الأولية (protothreads) عن غيرها من تطبيقات الروتينات الفرعية (coroutines )، أو الخيوط الحقيقية، بأنها لا تعتمد على مكدس الذاكرة. وهذا له مزايا وعيوب. من عيوبها عدم إمكانية ضمان احتفاظ المتغيرات المحلية داخل الخيط الأولي بقيمها عند الانتقال إلى سياق آخر، إذ يجب عليها الاحتفاظ بحالتها باستخدام متغيرات ثابتة أو خارجية، غالباً ما تكون عامة . [ 1 ] أما من مزاياها، فهي خفتها الشديدة، ما يجعلها مفيدة في الأنظمة ذات الذاكرة المحدودة للغاية، مثل المتحكمات الدقيقة الصغيرة، حيث تكون الحلول الأخرى غير عملية أو غير مرغوبة.

علّق توم داف ، صاحب جهاز داف الشهير، على أوجه قصور هذه الطريقة قائلاً: "هناك حيلة مشابهة لآلات الحالة التي تعمل بالمقاطعات، وهي معقدة للغاية بحيث لا يمكن الخوض فيها. [...] لم أعتبرها قطّ تطبيقًا مناسبًا للروتينات الفرعية العامة، لأنه ليس من السهل تفعيل روتين فرعي واحد عدة مرات في وقت واحد، كما أنه من المستحيل باستخدام هذه الطريقة أن تتخلى الروتينات الفرعية عن التحكم في أي مكان آخر غير روتينها الرئيسي. تتيح لك مكتبة بسيطة لتبديل المكدس بلغة التجميع القيام بكليهما." [ 2 ]

تم تطوير مفهوم الخيوط الأولية بواسطة آدم دانكلز وأوليفر شميدت، [ 3 ] استنادًا إلى أعمال سابقة لسيمون تاتام [ 4 ] وتوم داف . [ 2 ]

انظر أيضاً

مراجع

  1. أ. دانكلز، أ. شميدت، ت. فويغت، و م. علي، بروتوثريدز: تبسيط البرمجة القائمة على الأحداث للأنظمة المدمجة ذات الذاكرة المحدودة ، وقائع مؤتمر ACM SenSys، بولدر، كولورادو، الولايات المتحدة الأمريكية، نوفمبر 2006. ( ملف PDF ، شرائح العرض التقديمي )
  2. 1 2 "Brainwagon  » Coroutines in C" .
  3. آدم دانكلز. "Protothreads - خيوط خفيفة الوزن وغير مكدسة في لغة C" . Dunkels.com . تم الاطلاع عليه بتاريخ 21 أبريل 2017 .
  4. "الروتينات الفرعية في لغة C" .