Goroutines und Channels in Go ErklÀrt

Stellen Sie go vor einen Funktionsaufruf, und diese Funktion lĂ€uft nebenlĂ€ufig zum Rest des Programms, verwaltet von der Go-Runtime statt vom Betriebssystem. Eine zu starten ist der einfache Teil. Der schwierige Teil ist, zwei Goroutinen ein Ergebnis ĂŒbergeben zu lassen, ohne dass sie sich gegenseitig den Zustand kaputt machen, und genau das ist die Aufgabe von Channels. Was ist eine Goroutine? Eine Goroutine ist eine Funktion, die unabhĂ€ngig von der Funktion lĂ€uft, die sie gestartet hat, verwaltet von der Go-Runtime und nicht vom Betriebssystem. Ein OS-Thread reserviert ein Megabyte oder mehr Stack und kostet den Kernel echte Zeit fĂŒr die Planung. Eine Goroutine startet mit einem Stack von etwa 2 KB, der bei Bedarf wĂ€chst, und die Runtime multiplext viele Goroutinen auf eine Handvoll OS-Threads. Tausende davon zu starten ist normal. ...

11. Oktober 2026 Â· 8 Minuten Â· 1690 Wörter Â· SpaghettiCoder

Was ist eine Race Condition und wie behebt man sie

Zwei Anfragen treffen im Abstand von einer halben Millisekunde auf denselben “100€ abheben”-Endpunkt. Das Konto hat 150€. Beide Anfragen lesen diesen Kontostand, beide sehen genug Guthaben, beide werden genehmigt, beide ziehen 100€ ab. Das Konto landet bei -50€, und kein Codepfad hĂ€tte das zulassen dĂŒrfen. Das ist eine Race Condition: Das Ergebnis hĂ€ngt davon ab, welche Operation zufĂ€llig zuerst fertig wird, und “zuerst” war nie eine Entscheidung, die der Code getroffen hat. ...

9. Oktober 2026 Â· 9 Minuten Â· 1831 Wörter Â· SpaghettiCoder