التزامن المنظم
التزامن المنظم هو نموذج برمجة يهدف إلى تحسين وضوح وجودة ووقت تطوير برنامج الكمبيوتر باستخدام نهج منظم للبرمجة المتزامنة .
تتمثل الفكرة الأساسية في تغليف سلاسل التنفيذ المتزامنة (بما في ذلك سلاسل وعمليات نواة النظام ومساحة المستخدم) باستخدام بنى تحكم في التدفق ذات نقاط دخول وخروج واضحة، والتي تضمن اكتمال جميع السلاسل المنبثقة قبل الخروج. يسمح هذا التغليف بنقل الأخطاء في السلاسل المتزامنة إلى النطاق الأصل لبنية التحكم، وإدارتها بواسطة آليات معالجة الأخطاء الأصلية لكل لغة برمجة. كما يسمح ببقاء تدفق التحكم واضحًا من خلال بنية الكود المصدري رغم وجود التزامن. ولضمان فعالية هذا النموذج، يجب تطبيقه باستمرار على جميع مستويات البرنامج ، وإلا فقد تتسرب السلاسل المتزامنة، أو تصبح يتيمة، أو تفشل في نقل أخطاء وقت التشغيل بشكل صحيح.
التزامن المنظم يشبه البرمجة المنظمة ، التي تستخدم هياكل تدفق التحكم التي تغلف العبارات والإجراءات الفرعية المتسلسلة.
تاريخ
يُعدّ نموذج التفرع والدمج، الذي ظهر في ستينيات القرن الماضي، والذي تجسد في أدوات المعالجة المتعددة مثل OpenMP ، مثالًا مبكرًا لنظام يضمن اكتمال جميع الخيوط قبل الخروج. ومع ذلك، يجادل سميث بأن هذا النموذج لا يُمثل تزامنًا هيكليًا حقيقيًا، لأن لغة البرمجة لا تُدرك سلوك الدمج، وبالتالي فهي غير قادرة على فرض الأمان. [ 1 ]
طُوِّر هذا المفهوم عام 2016 على يد مارتن سوستريك (مطور ZeroMQ ) باستخدام مكتبة libdill المكتوبة بلغة C، مع التركيز على الروتينات الفرعية (goroutines) كنقطة انطلاق. [ 2 ] ثم جرى تطويره عام 2017 على يد ناثانيال ج. سميث، الذي قدم "نمط الحضانة" في تطبيقه بلغة بايثون المسمى Trio. [ 3 ] وفي الوقت نفسه، توصل رومان إليزاروف بشكل مستقل إلى الأفكار نفسها أثناء تطويره مكتبة تجريبية للروتينات الفرعية للغة Kotlin ، [ 4 ] [ 5 ] والتي أصبحت فيما بعد مكتبة قياسية. [ 6 ]
في عام 2021، اعتمدت لغة Swift التزامن المنظم. [ 7 ] وفي وقت لاحق من ذلك العام، نُشرت مسودة اقتراح لإضافة التزامن المنظم إلى لغة Java . [ 8 ]
الاختلافات
يُعدّ التعامل مع خطأ في أحد عناصر شجرة الخيوط المتزامنة أحد أبرز أوجه الاختلاف. في التطبيقات البسيطة، يُنتظر ببساطة حتى تنتهي الخيوط الفرعية والخيوط الشقيقة للخيط المُعطّل من التنفيذ قبل نقل الخطأ إلى نطاق الخيط الأصل. مع ذلك، قد يستغرق ذلك وقتًا غير محدد. أما البديل فهو استخدام آلية إلغاء عامة (عادةً ما تكون آلية تعاونية تسمح بمراعاة ثوابت البرنامج) لإنهاء الخيوط الفرعية والخيوط الشقيقة بطريقة سريعة.
انظر أيضاً
مراجع
- ↑ سميث، ناثانيال ج. (25 أبريل 2018). "ملاحظات حول التزامن المنظم، أو: اعتبار عبارة Go ضارة" . تم الاسترجاع في 1 أغسطس 2019 .
- ↑ سوستريك، مارتن (7 فبراير 2016). "التزامن المنظم" . تم الاسترجاع في 20 أكتوبر 2025 .
- ↑ سميث، ناثانيال ج. (10 مارس 2017). "الإعلان الثلاثي" . تم الاسترجاع في 23 سبتمبر 2022 .
- ↑ إليزاروف، رومان (12 سبتمبر 2018). "التزامن المنظم" . تم الاسترجاع في 21 سبتمبر 2019 .
- ↑ إليزاروف، رومان (11 يوليو 2019). التزامن المنظم (فيديو). مؤتمر هيدرا للحوسبة الموزعة. 42 دقيقة . تم الاطلاع عليه في 21 سبتمبر 2019.
كنا بحاجة إلى اسم، وكنا بحاجة إلى وضع اللمسات الأخيرة على هذا المفهوم برمته [...] وعثرنا بالصدفة على منشور المدونة هذا [...] بقلم ناثانيال ج. سميث
. - ↑ "أساسيات الكوروتينات: التزامن المنظم" . كوتلين . جيت برينز . تم الاطلاع عليه في 3 مارس 2022 .
- ↑ ماكول، جون؛ غروف، جو؛ غريغور، دوغ؛ مالاوسكي، كونراد. "مقترح التزامن المهيكل في لغة سويفت" . مستودع تطوير لغة سويفت من آبل . غيت هاب . تم الاطلاع عليه في 3 مارس 2022 .
- ↑ بريسلر، رون. "مسودة JEP: التزامن المنظم (حاضنة)" . OpenJDK . أوراكل . تم الاسترجاع في 3 مارس 2022 .
روابط خارجية
- ملاحظات حول التزامن المنظم، أو: عبارة Go التي يعتبرها ناثانيال ج. سميث ضارة
- منتدى التزامن المنظم ، نقاش متعدد لغات البرمجة حول التزامن المنظم بمشاركة سوستريك، سميث، وإليزاروف
- مؤتمر FOSDEM 2019: التزامن المنظم ، عرض تقديمي سريع لمارتن سوستريك مع روابط لبعض التطبيقات
- نماذج البرمجة
- الحوسبة المتزامنة
