Concurrency in Go. Entwicklung paralleler Anwendungen in Go
238 Seiten
German
PDF
4.5

Concurrency in Go. Entwicklung paralleler Anwendungen in Go

Concurrency in Go. Entwicklung paralleler Anwendungen in Go

Autor:

Jahr:

Zusammenfassung:

Einleitung

Das Buch „Concurrency in Go. Entwicklung paralleler Anwendungen in Go“ (Originaltitel: Concurrency in Go: Tools and Techniques for Developers) von Katherine Cox-Buday ist einer der maßgeblichsten Leitfäden zur nebenläufigen Programmierung in der Sprache Go. Das 2017 im O'Reilly-Verlag erschienene Werk wurde schnell zum Standardwerk für Entwickler, die Goroutinen, Kanäle und komplexe Synchronisationsmuster erlernen möchten. Auf 238 Seiten erklärt die Autorin nicht nur die Syntax, sondern taucht tief in die Philosophie der Parallelität ein, wie sie in Go gelebt wird, und lehrt, zuverlässigen, effizienten und sicheren Code zu schreiben.

Worum geht es in diesem Buch

Das Buch ist als eine schrittweise Reise von den Grundlagen zu fortgeschrittenen Techniken aufgebaut. Der erste Teil widmet sich den theoretischen Grundlagen: Was ist Nebenläufigkeit, worin unterscheidet sie sich von Parallelität, das Go-Speichermodell und die grundlegenden Synchronisationsprimitive (Mutexe, WaitGroup, Atomik). Anschließend geht die Autorin zum zentralen Thema über – Goroutinen und Kanäle – und zeigt, wie man mit ihnen zusammensetzbare und skalierbare Systeme baut. Besonderes Augenmerk liegt auf Patterns: Pipeline, Fan-in/Fan-out, Or-Done-Channel, Tee-Channel, Bridge-Channel und andere. Das Buch endet mit der Analyse realer Beispiele – von einem einfachen Webcrawler über die Implementierung eines Worker-Pools bis hin zum Graceful Shutdown. Jedes Kapitel enthält praktische Codebeispiele und Warnungen vor typischen Fehlern (Deadlock, Race Condition, Goroutine-Leak).

Für wen ist dieses Buch geeignet

Das Buch richtet sich an Go-Entwickler, die bereits mit den Grundlagen der Sprache vertraut sind (Syntax, Typen, Funktionen). Es ist sowohl für Anfänger nützlich, die gerade erst mit Goroutinen beginnen, als auch für erfahrene Ingenieure, die ihr Wissen systematisieren und fortgeschrittene Patterns erlernen möchten. Wenn Sie Microservices, Netzwerkdienstprogramme, Datenstromverarbeiter oder Systeme schreiben, bei denen Leistung und parallele Verarbeitung wichtig sind, ist dieses Buch genau das Richtige für Sie. Es ist auch für Entwickler anderer Sprachen (Python, Java, C#) geeignet, die auf Go umsteigen und dessen einzigartigen Ansatz zur Nebenläufigkeit verstehen möchten.

Was der Leser lernen wird

  • Grundlagen der Nebenläufigkeit in Go: Speichermodell, Goroutinen, Kanäle, Select, Sync-Paket.
  • Patterns der parallelen Programmierung: Pipeline, Fan-out/Fan-in, Or-Done, Tee-Channel, Bridge-Channel.
  • Lebenszyklus-Management von Goroutinen: Graceful Shutdown, Kontexte (context.Context), Abbruch von Operationen.
  • Vermeidung von Fehlern: Deadlock, Race Condition, Goroutine-Leak, gegenseitige Blockaden.
  • Testen von nebenläufigem Code: go test -race, Mocks, deterministisches Testen.
  • Reale Beispiele: Webcrawler, Worker-Pool, Ereignisverarbeitungssystem.

Stärken des Buches

Der erste und wichtigste Vorteil ist die Tiefe und Strukturiertheit. Das Buch listet nicht nur APIs auf, sondern erklärt, warum in Go bestimmte Entscheidungen getroffen wurden (z. B. „Kommunizieren Sie nicht über gemeinsamen Speicher, teilen Sie Speicher durch Kommunikation“). Zweitens die praktische Ausrichtung: Jedes Pattern wird von Code begleitet, der sofort ausgeführt und modifiziert werden kann. Drittens der Fokus auf Zusammensetzbarkeit: Die Autorin lehrt, komplexe Systeme aus einfachen, gut isolierten Komponenten zu bauen. Viertens die klare Sprache und hervorragenden Beispiele; selbst komplexe Konzepte (z. B. der Or-Done-Channel) werden anschaulich erklärt. Schließlich enthält das Buch wertvolle Tipps zum Debuggen und Profiling (pprof, trace), was in anderen Leitfäden selten zu finden ist.

Empfehlung

Ich empfehle dieses Buch nachdrücklich allen, die in Go programmieren und über „Hello, World“ hinausgehen möchten. Es wird besonders nützlich sein für:

  • Backend-Entwickler, die hochlastige Dienste erstellen;
  • DevOps-Ingenieure, die Tools in Go schreiben (CLI, Agents, Metriksammler);
  • Studenten und Dozenten, die

Empfehlungen