ابنِ تطبيقات Go متزامنة بثقة. تعلم أنماطاً جاهزة للإنتاج للـ goroutines و channels و worker pools والإغلاق السلس لتجنب ظروف السباق وتسرب الموارد.
Скачать ZIP навыка
Загрузить в Claude
Перейдите в Settings → Capabilities → Skills → Upload skill
Включите и начните использовать
Протестировать
Использование «go-concurrency-patterns». أنشئ worker pool مع 3 عمال يعالج وظائف من channel
Ожидаемый результат:
إليك تطبيق worker pool مع 3 عمال يعالج الوظائف بشكل متزامن ويجمع النتائج عبر channel نتائج مع مزامنة مناسبة باستخدام sync.WaitGroup.
Использование «go-concurrency-patterns». أظهر لي كيفية استخدام errgroup لطلبات HTTP متزامنة
Ожидаемый результат:
هذا المثال يوضح golang.org/x/sync/errgroup لجلب عناوين URL متعددة بشكل متزامن حيث يلغي أول خطأ جميع الطلبات المعلقة عبر نشر context.
Использование «go-concurrency-patterns». طبق semaphore للحد من العمليات المتزامنة
Ожидаемый результат:
أقدم نهجين للـ semaphore: استخدام golang.org/x/sync/semaphore.Weighted للـ semaphores الموزونة و semaphore مبني على channel باستخدام struct{} للحد من المعدل البسيط.
Аудит безопасности
БезопасноAll 44 static analysis findings are false positives from markdown-enclosed Go code examples. The skill contains legitimate educational content about Go concurrency patterns with no executable code or security risks.
Оценка качества
Что вы можете построить
بناء خدمات مصغرة متزامنة
إنشاء خدمات Go قابلة للتوسع مع worker pools تتعامل مع طلبات متعددة بشكل متزامن مع إدارة الموارد بكفاءة
تطبيق أنابيب معالجة البيانات
تصميم أنابيب fan-out/fan-in لمعالجة مجموعات البيانات الكبيرة بشكل متوازٍ مع معالجة أخطاء مناسبة وإلغاء
تصحيح ظروف السباق
تحديد وإصلاح أخطاء التزامن في كود Go الموجود باستخدام أنماط مزامنة مناسبة وأدوات كشف السباق
Попробуйте эти промпты
أظهر لي كيفية إنشاء worker pool في Go يعالج 100 وظيفة مع 5 عمال متزامنين
اكتب Go server مع إغلاق سلس يتعامل مع إشارات SIGTERM وينتظر اكتمال الطلبات الجارية
أنشئ أنبوب fan-out/fan-in في Go يعالج العناصر عبر 3 مراحل مع 5 عمال لكل مرحلة
راجع كود Go هذا وحدد تسرب goroutine المحتمل، ثم أرني كيفية إصلاحها باستخدام إلغاء context
Лучшие практики
- استخدم دائماً context.Context للإلغاء والمواعيد النهائية في العمليات المتزامنة
- أغلق channels فقط من جانب المرسل لتجنب panics
- فضل channels على mutexes للتواصل بين goroutines
- استخدم sync.WaitGroup أو errgroup للانتظار حتى اكتمال goroutines
Избегать
- استخدام time.Sleep للمزامنة بدلاً من البدائيات المناسبة مثل channels أو WaitGroup
- إغلاق channels من جانب المستقبل مما يسبب panic
- نسيان التحقق من ctx.Done() مما يؤدي إلى تسرب goroutines
- مشاركة الذاكرة بين goroutines بدون مزامنة مناسبة
Часто задаваемые вопросы
ما الفرق بين البرمجة المتزامنة والمتوازية في Go؟
متى يجب استخدام channels مقابل mutexes؟
كيف أمنع تسرب goroutine؟
ما الغرض من sync.WaitGroup؟
كيف أكتشف ظروف السباق في كود Go الخاص بي؟
ما الفرق بين channels المخزنة وغير المخزنة؟
Сведения для разработчиков
Автор
sickn33Лицензия
MIT
Репозиторий
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/go-concurrency-patternsСсылка
main
Структура файлов