Erstellen Sie mit Zuversicht nebenläufige Go-Anwendungen. Lernen Sie produktionsreife Muster für Goroutines, Channels, Worker-Pools und graceful Shutdown, um Race Conditions und Ressourcenlecks zu vermeiden.
Die Skill-ZIP herunterladen
In Claude hochladen
Gehe zu Einstellungen → Fähigkeiten → Skills → Skill hochladen
Einschalten und loslegen
Teste es
Verwendung von "go-concurrency-patterns". Erstelle einen Worker-Pool mit 3 Workern, der Jobs von einem Channel verarbeitet
Erwartetes Ergebnis:
Hier ist eine Worker-Pool-Implementierung mit 3 Workern, die Jobs nebenläufig verarbeitet und Ergebnisse über einen Results-Channel sammelt, mit korrekter Synchronisation mithilfe von sync.WaitGroup.
Verwendung von "go-concurrency-patterns". Zeige mir, wie man errgroup für nebenläufige HTTP-Anfragen verwendet
Erwartetes Ergebnis:
Dieses Beispiel demonstriert golang.org/x/sync/errgroup, um mehrere URLs gleichzeitig abzurufen, wobei der erste Fehler alle ausstehenden Anfragen durch Context-Propagation abbricht.
Verwendung von "go-concurrency-patterns". Implementiere einen Semaphore zur Begrenzung gleichzeitiger Operationen
Erwartetes Ergebnis:
Ich stelle zwei Semaphore-Ansätze vor: golang.org/x/sync/semaphore.Weighted für gewichtete Semaphoren und einen channel-basierten struct{}-Semaphor für einfaches Rate-Limiting.
Sicherheitsaudit
SicherAll 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.
Qualitätsbewertung
Was du bauen kannst
Nebenläufige Microservices entwickeln
Erstellen Sie skalierbare Go-Dienste mit Worker-Pools, die mehrere Anfragen gleichzeitig verarbeiten und dabei Ressourcen effizient verwalten
Datenverarbeitungspipelines implementieren
Entwerfen Sie Fan-out/Fan-in-Pipelines zur parallelen Verarbeitung großer Datensätze mit ordnungsgemäßer Fehlerbehandlung und Cancellation
Race Conditions debuggen
Identifizieren und beheben Sie Concurrency-Fehler in vorhandenem Go-Code mit geeigneten Synchronisationsmustern und Race-Detection-Tools
Probiere diese Prompts
Zeige mir, wie man in Go einen Worker-Pool erstellt, der 100 Jobs mit 5 gleichzeitigen Workern verarbeitet
Schreibe einen Go-Server mit Graceful Shutdown, der SIGTERM-Signale verarbeitet und darauf wartet, dass laufende Anfragen abgeschlossen werden
Erstelle eine Fan-out/Fan-in-Pipeline in Go, die Elemente durch 3 Stufen mit jeweils 5 Workern pro Stufe verarbeitet
Überprüfe diesen Go-Code und identifiziere potenzielle Goroutine-Leaks, zeige mir dann, wie man sie mit Context-Cancellation behebt
Bewährte Verfahren
- Verwenden Sie immer context.Context für Cancellation und Deadlines bei nebenläufigen Operationen
- Schließen Sie Channels nur von der Sender-Seite, um Panics zu vermeiden
- Bevorzugen Sie Channels gegenüber Mutexes für die Kommunikation zwischen Goroutines
- Verwenden Sie sync.WaitGroup oder errgroup, um auf den Abschluss von Goroutines zu warten
Vermeiden
- Verwendung von time.Sleep für Synchronisation anstelle geeigneter Primitiven wie Channels oder WaitGroup
- Schließen von Channels von der Empfänger-Seite, was zu Panics führt
- Vergessen, ctx.Done() zu prüfen, was zu Goroutine-Leaks führt
- Gemeinsame Nutzung von Speicher zwischen Goroutines ohne ordnungsgemäße Synchronisation
Häufig gestellte Fragen
Was ist der Unterschied zwischen nebenläufiger und paralleler Programmierung in Go?
Wann sollte ich Channels gegenüber Mutexes verwenden?
Wie verhindere ich Goroutine-Leaks?
Welchen Zweck erfüllt sync.WaitGroup?
Wie erkenne ich Race Conditions in meinem Go-Code?
Was ist der Unterschied zwischen gepufferten und ungepufferten Channels?
Entwicklerdetails
Autor
sickn33Lizenz
MIT
Repository
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/go-concurrency-patternsRef
main
Dateistruktur