Sobes.tech
Junior — Middle

Wie erfolgt der Signalenaustausch über Kanäle im Programmiersystem?

sobes.tech KI

Antwort von AI

In der Programmiersprache Go (Golang) werden Kanäle verwendet, um Signale und Daten zwischen Goroutines auszutauschen, wodurch Synchronisation und Kommunikation gewährleistet werden.

Ein Kanal ist ein typisierter Durchlauf, durch den Werte gesendet und empfangen werden können. Das Senden und Empfangen auf einem Kanal blockiert die Goroutine, bis die andere Seite bereit ist, Daten zu empfangen oder zu senden, was eine effiziente Synchronisation ermöglicht.

Beispiel für den Signalenaustausch mit einem Kanal:

package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Println("Arbeit hat begonnen")
    time.Sleep(time.Second) // Arbeit simulieren
    fmt.Println("Arbeit beendet")
    done <- true // Signal für Abschluss senden
}

func main() {
    done := make(chan bool)
    go worker(done) // Goroutine starten
    <-done           // auf das Abschlussignal warten
    fmt.Println("Hauptfunktion beendet")
}

In diesem Beispiel wird der Kanal done verwendet, um das Abschlussignal an die Goroutine worker zu übertragen. Die Hauptfunktion blockiert beim Lesen aus dem Kanal, bis sie das Signal erhält, was eine korrekte Synchronisation der Ausführung ermöglicht.