"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إنهاء العديد من goroutines متعددة؟

كيف يمكنني إنهاء العديد من goroutines متعددة؟

نشر في 2025-02-07
تصفح:942

How Can I Gracefully Terminate Multiple Goroutines in Go?

. أحد المقاربات الشائعة هو استخدام قناة لإكمال الإشارة. ومع ذلك ، يمكن أن تؤدي هذه الطريقة إلى ذعر "الكتابة إلى قناة مغلقة" إذا لم ينتهي goroutines بالترتيب المتوقع. حل أفضل ينطوي على استخدام السياقات. توفر السياقات آلية للتواصل والإلغاء بين goroutines. إليك كيفية تنفيذ هذا في GO:

حزمة الرئيسية يستورد ( "سياق" "المزامنة" ) Func Main () { // إنشاء سياق ودالة لإلغاءه CTX ، إلغاء: = context.withcancel (context.background ()) // تهيئة مجموعة انتظار لتتبع إكمال Goroutine wg: = sync.waitgroup {} wg.add (3) // إضافة 3 goroutines إلى مجموعة الانتظار // إطلاق ثلاثة goroutines // يستمع كل goroutine للسياق الذي يتعين القيام به اذهب func () { تأجيل wg.done () ل { يختار { الحالة

في هذا المثال ، عندما يكمل Goroutine الثالث عملياته ، فإنه يلغي السياق. هذا ينشر الإلغاء إلى goroutines الأخرى ، مما تسبب في إنهاءها أيضًا. باستخدام السياقات ، نقوم بإلغاء احتمال الذعر والتأكد من أن جميع goroutines تنسيق إنهاءها بشكل فعال.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3