Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Hey, willkommen bei Concurrency in Go! Ich freue mich, dass du dieses Buch in die Hand genommen hast, und bin gespannt darauf, mit dir in den nächsten sechs Kapiteln das Thema Gleichzeitigkeit in Go zu erforschen!

Go ist eine wunderbare Sprache. Ich erinnere mich, dass ich sie mit großem Interesse erkundet habe, als sie zum ersten Mal angekündigt und in die Welt gesetzt wurde: Sie war kurz, ließ sich unglaublich schnell kompilieren, war leistungsfähig, unterstützte die Duck-Typisierung und - zu meiner Freude - fand ich die Arbeit mit den Primitiven der Parallelität intuitiv. Als ich zum ersten Mal das Schlüsselwort go benutzte, um eine Goroutine zu erstellen (das werden wir noch behandeln, versprochen!), musste ich lächerlich grinsen. Ich hatte schon in mehreren Sprachen mit Gleichzeitigkeit gearbeitet, aber noch nie in einer Sprache, die Gleichzeitigkeit so einfach machte (was nicht heißen soll, dass es sie nicht gibt; ich hatte nur noch keine benutzt). Ich hatte meinen Weg zu Go gefunden.

Im Laufe der Jahre schrieb ich nicht nur private Skripte in Go, sondern auch persönliche Projekte, bis ich schließlich beruflich an einem Projekt mit vielen hunderttausend Zeilen arbeitete. Im Laufe der Zeit wuchs die Community mit der Sprache und wir entdeckten gemeinsam bewährte Methoden für die Arbeit mit Parallelität in Go. Ein paar Leute hielten Vorträge über die Muster, die sie entdeckt hatten. Aber es gab immer noch nicht viele umfassende Anleitungen für den Umgang mit Gleichzeitigkeit in Go.

Mit diesem Gedanken im Hinterkopf habe ich mich daran gemacht, dieses Buch zu schreiben. Ich wollte, dass die Community Zugang zu qualitativ hochwertigen und umfassenden Informationen über die Gleichzeitigkeit in Go hat: wie man sie einsetzt, bewährte Methoden und Muster, um sie in deine Systeme einzubauen, und wie das Ganze im Verborgenen funktioniert. Ich habe mein Bestes getan, um ein Gleichgewicht zwischen diesen Anliegen herzustellen.

Ich hoffe, dieses Buch erweist sich als nützlich!

Wer sollte dieses Buch lesen?

Dieses Buch richtet sich an Entwickler, die bereits einige Erfahrung mit Go haben; ich versuche nicht, die grundlegende Syntax der Sprache zu erklären. Kenntnisse darüber, wie Gleichzeitigkeit in anderen Sprachen dargestellt wird, sind nützlich, aber nicht notwendig.

Am Ende dieses Buches werden wir alle Aspekte der Gleichzeitigkeit in Go besprochen haben: häufige Fallstricke der Gleichzeitigkeit, die Motivation hinter dem Design der Go-Gleichzeitigkeit, die grundlegende Syntax der Go-Gleichzeitigkeitsprimitive, häufige Gleichzeitigkeitsmuster, Muster von Mustern und verschiedene Werkzeuge, die dir auf deinem Weg helfen werden.

Aufgrund der Breite der Themen, die wir behandeln, wird dieses Buch für verschiedene Personengruppen von Nutzen sein. Der nächste Abschnitt hilft dir, dich in diesem Buch zurechtzufinden, je nachdem, welche Bedürfnisse du hast.

Navigieren in diesem Buch

Wenn ich Fachbücher lese, springe ich normalerweise zu den Bereichen, die mein Interesse wecken. Oder wenn ich mich für meine Arbeit in eine neue Technologie einarbeiten will, überfliege ich die Teile, die für meine Arbeit unmittelbar relevant sind. Was auch immer dein Anwendungsfall ist, hier ist ein Fahrplan für das Buch, in der Hoffnung, dass er dir hilft, dorthin zu gelangen, wo du sein musst!

Kapitel 1, Eine Einführung in die Gleichzeitigkeit

In diesem Kapitel erhältst du einen Überblick darüber, warum Gleichzeitigkeit ein wichtiges Konzept ist, und es werden einige der grundlegenden Probleme erörtert, die es schwierig machen, Gleichzeitigkeit korrekt umzusetzen. Außerdem wird kurz darauf eingegangen, wie Go dabei hilft, einige dieser Probleme zu lösen.

Wenn du dich mit Gleichzeitigkeit auskennst oder einfach nur die technischen Aspekte der Verwendung der Gleichzeitigkeits-Primitive von Go kennenlernen möchtest, kannst du dieses Kapitel getrost überspringen.

Kapitel 2, Modellierung deines Codes: Sequentielle Abläufe kommunizieren

Dieses Kapitel befasst sich mit einigen der Motivationsfaktoren, die zum Design von Go beigetragen haben. Das wird dir helfen, dich mit anderen Mitgliedern der Go-Gemeinschaft zu unterhalten und zu verstehen, warum die Sprache so funktioniert, wie sie funktioniert.

Kapitel 3, Go's Gleichzeitigkeits-Bausteine

Hier werden wir uns mit der Syntax von Go's Gleichzeitigkeitsprimitiven beschäftigen. Außerdem lernen wir das Paket sync kennen, das für die Synchronisierung des Speicherzugriffs in Go zuständig ist. Wenn du noch nie mit Go gearbeitet hast und sofort einsteigen möchtest, ist dies der richtige Ort, um damit zu beginnen.

Zwischen den Grundlagen zum Schreiben von nebenläufigem Code in Go werden Konzepte mit anderen Sprachen und Nebenläufigkeitsmodellen verglichen. Streng genommen ist es nicht notwendig, diese Dinge zu verstehen, aber diese Konzepte helfen dir, ein umfassendes Verständnis von Nebenläufigkeit in Go zu erlangen.

Kapitel 4, Gleichzeitigkeitsmuster in Go

In diesem Kapitel sehen wir uns an, wie die Gleichzeitigkeits-Primitive von Go zu nützlichen Mustern zusammengesetzt werden. Diese Muster helfen uns, Probleme zu lösen und Probleme zu vermeiden, die bei der Kombination von Gleichzeitigkeitsprimitiven auftreten können.

Wenn du bereits nebenläufigen Code in Go geschrieben hast, sollte dir dieses Kapitel trotzdem nützlich sein.

Kapitel 5, Gleichzeitigkeit im Maßstab

In diesem Kapitel fassen wir die gelernten Muster zu größeren Mustern zusammen, die häufig in größeren Programmen, Diensten und verteilten Systemen verwendet werden.

Kapitel 6, Goroutinen und die Go-Laufzeit

In diesem Kapitel wird beschrieben, wie die Go-Laufzeit mit der Zeitplanung von Goroutinen umgeht. Dieses Kapitel ist für diejenigen gedacht, die die Interna der Go-Laufzeitumgebung verstehen wollen.

Anhang

Der Anhang listet einfach verschiedene Tools und Befehle auf, die das Schreiben und Debuggen von nebenläufigen Programmen erleichtern können.

Online-Ressourcen

Go hat eine sehr aktive und leidenschaftliche Gemeinschaft! Für alle, die Go noch nicht kennen, ist es leicht, freundliche und hilfsbereite Menschen zu finden, die dich auf deinem Weg zu Go begleiten. Hier sind ein paar meiner Lieblings-Community-Ressourcen, in denen du lesen, Hilfe bekommen und dich mit anderen Go-Kennern austauschen kannst:

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Symbol steht für einen Tipp, eine Anregung oder einen allgemeinen Hinweis.

Warnung

Dieses Symbol weist auf eine Warnung oder Vorsicht hin.

Code-Beispiele verwenden

Der gesamte in diesem Buch enthaltene Code ist auf der Landing Page des Buches zu finden: http: //katherine.cox-buday.com/concurrency-in-go. Er ist unter der MIT-Lizenz veröffentlicht und kann unter diesen Bedingungen verwendet werden.

O'Reilly Safari

Hinweis

Safari (ehemals Safari Books Online) ist eine mitgliedschaftsbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Einzelpersonen.

Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.

Weitere Informationen erhältst du unter http://oreilly.com/safari.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/concurrency-in-go aufrufen .

Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an

Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://www.youtube.com/oreillymedia

Danksagungen

Ein Buch zu schreiben ist eine gewaltige und herausfordernde Aufgabe. Was du hier vor dir hast, wäre nicht möglich gewesen ohne ein Team von Menschen, die mich unterstützt haben, indem sie Dinge überprüften, Hilfsmittel schrieben und Fragen beantworteten. Ich bin allen, die mir geholfen haben, zutiefst dankbar und möchte ihnen meinen aufrichtigen Dank aussprechen. Wir haben das gemeinsam geschafft!

Eine Schwalbe macht noch keinen Sommer...

Sprichwort

  • Alan Donovan, der mir bei dem ursprünglichen Vorschlag geholfen hat und mich auch auf den Weg gebracht hat.

  • Andrew Wilkins, mit dem ich das große Glück hatte, bei Canonical zu arbeiten. Sein Einblick, seine Professionalität und seine Intelligenz haben dieses Buch beeinflusst, und seine Rezensionen haben es noch besser gemacht.

  • Ara Pulido, der mir geholfen hat, dieses Buch mit den Augen eines neuen Gophers zu sehen.

  • Dawn Schanafelt, meiner Lektorin, die einen großen Anteil daran hat, dass sich dieses Buch so klar wie möglich liest. Besonders schätze ich ihre (und O'Reillys) Geduld, als das Leben mir beim Schreiben dieses Buches ein paar Schwierigkeiten in den Weg legte.

  • Francesc Campoy, der dafür gesorgt hat, dass ich immer die neueren Erdhörnchen im Blick hatte.

  • Ivan Daniluk, der mit seiner Liebe zum Detail und seinem Interesse an Gleichzeitigkeit dazu beigetragen hat, dass dies ein umfassendes und nützliches Buch ist.

  • Yasushi Shoji, der org-asciidoc geschrieben hat, ein Tool, mit dem ich AsciiDoc-Artefakte aus dem Org-Modus exportieren konnte. Er wusste nicht, dass er dabei half, ein Buch zu schreiben, aber er reagierte immer sehr schnell auf Fehlerberichte und Fragen!

  • Die Maintainer von Go: Vielen Dank für euer Engagement.

  • Die Maintainer des Org-Modus, des GNU Emacs-Modus, mit dem dieses Buch geschrieben wurde. Mein ganzes Leben spielt sich in Org ab; vielen Dank an alle.

  • Die Betreuer von GNU Emacs, dem Texteditor, mit dem ich dieses Buch geschrieben habe. Ich kann mir kein Werkzeug vorstellen, das in meinem Leben eine größere Rolle gespielt hat.

  • Die öffentlichen Bibliotheken von St. Louis, in denen der größte Teil dieses Buches geschrieben wurde.

Get Gleichzeitigkeit in Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.