Blockiert Golang nicht?
Dec 17, 2019 am 11:01 AMselect ist ein häufig verwendetes Schlüsselwort in der Go-Sprache. Es wird verwendet, um E/A-Vorgänge im Zusammenhang mit Kanälen zu überwachen.
Wenn mehrere Fälle ausgeführt werden können, wählt Select zufällig und fair einen zur Ausführung aus. Andere werden nicht hingerichtet. (Lernempfehlung: go)
Ansonsten:
Wenn eine Standardklausel vorhanden ist, wird die Anweisung ausgeführt.
Ohne die Standardklausel wird „select“ blockiert, bis eine Kommunikation ausgeführt werden kann; Go bewertet den Kanal oder Wert nicht erneut.
Grundlegende Verwendung
//select基本用法 select { case <- chan1: // 如果chan1成功读到数据,则进行该case处理语句 case chan2 <- 1: // 如果成功向chan2写入数据,则进行该case处理语句 default: // 如果上面都没有成功,则进入default处理流程
Wenn ein oder mehrere E/A-Vorgänge abgeschlossen werden können, wählt das Go-Laufzeitsystem zufällig einen zur Ausführung aus, andernfalls, Falls vorhanden Wenn es keine Standardverzweigung gibt, wird die Select-Anweisung blockiert, bis mindestens eine E/A-Operation ausgeführt werden kann.
start := time.Now() c := make(chan interface{}) ch1 := make(chan int) ch2 := make(chan int) go func() { time.Sleep(4*time.Second) close(c) }() go func() { time.Sleep(3*time.Second) ch1 <- 3 }() go func() { time.Sleep(3*time.Second) ch2 <- 5 }() fmt.Println("Blocking on read...") select { case <- c: fmt.Printf("Unblocked %v later.\n", time.Since(start)) case <- ch1: fmt.Printf("ch1 case...") case <- ch2: fmt.Printf("ch1 case...") default: fmt.Printf("default go...") }
Führen Sie den obigen Code aus ist immer noch weniger als 3 Sekunden. Daher wird das aktuelle Programm standardmäßig ausgeführt.
Das obige ist der detaillierte Inhalt vonBlockiert Golang nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie konfiguriere ich den Verbindungspool für die Golang-Datenbankverbindung?

Wie kann ich Dateien mit Golang sicher lesen und schreiben?

Ähnlichkeiten und Unterschiede zwischen Golang und C++

Wie steil ist die Lernkurve der Golang-Framework-Architektur?

Wie generiere ich zufällige Elemente aus einer Liste in Golang?

Vergleich der Vor- und Nachteile des Golang-Frameworks

Was sind die Best Practices für die Fehlerbehandlung im Golang-Framework?

Anweisungen zur Verwendung des Golang-Framework-Dokuments
