Event-driven-Muster in golang

Ich bin mit golang zu implementieren eine einfache event-driven-Arbeiter. Es ist so:

  go func() {
        for {
            select {
            case data := <-ch:
                time.Sleep(1)
                someGlobalMap[data.key] = data.value 
            }
        }
    }()

Und die main-Funktion erstellen mehrere goroutines, und jeder von Ihnen wird nicht etwas, wie:

ch <- data
fmt.Println(someGlobalMap[data.key])

Wie Sie sehen können, dass, weil meine Arbeiter brauchen einige Zeit, um die Arbeit zu tun, ich habe null-Ergebnis in meiner main-Funktion.Wie kann ich diesen workflow richtig?

  • Die Karte gelesen werden soll, synchronisiert mit dem schreiben goroutines. Versuchen Sie ch <- data als ein weiterer Fall in der select-Klausel.
InformationsquelleAutor harryz | 2016-06-05
Schreibe einen Kommentar