Man kann verschiedene (von einander unabhängige) Prozesse auf verschiedene Threads auslagern. Dann werden diese auf dem Prozesser parallel durchgefürt.
Es wird vor das aufrufen der funktion ein go
als keyword hinzugefügt. Beachte das der Speicher zweischen den Threads nicht automatisch synchronisiert wird. Um diesen zu synchronisieren kann man Mutex (Mutual Exclusion) oder ein ähnliches Synchronisierungsinstrument verwenden. Diese Tools stellen sicher, dass nur eine Goroutine gleichzeitig auf den gemeinsamen Speicher zugreifen kann, wodurch sichergestellt wird, dass keine inkonsistenten Daten geschrieben werden.
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
<aside> ⚠️ ACHTUNG: z.B. ein Init-Script um z.B. eine DB aufzusetzen kann nicht auf einem anderen Thread laufen gelassen werden, falls der Main-Thread diese DB später braucht, da nicht sichergestellt werden kann ob das schon durgeführt wurde.
</aside>