1. Introducción
Un método paralelo más ligero que los hilos. GO admite esta operación desde el nivel de idioma
Uso de dos corrutinas
Es muy simple de usar, solo use la palabra clave go para identificarlo, y automáticamente abrirá una corrutina para ejecutar
package main
import (
"fmt"
"time"
)
func show(){
fmt.Println("go")
}
func main() {//g语言中的 ‘{’ 不能独占一行
go show()
time.Sleep(time.Second)//延时一秒
fmt.Println("main")
}
Resultado
Tenga en cuenta que después de que salga la corrutina principal, las subcorutinas también saldrán
Tres Gosched
Renunciar al segmento de tiempo y otras corrutinas se ejecutarán primero
package main
import (
"fmt"
"runtime"
)
func show(){
fmt.Println("go")
}
func main() {//g语言中的 ‘{’ 不能独占一行
go show()
runtime.Gosched()
fmt.Println("main")
}
resultado
Cuatro Goexit
Finalizar corrutina
package main
import (
"fmt"
"runtime"
)
func show(){
runtime.Goexit()
fmt.Println("go")
}
func main() {//g语言中的 ‘{’ 不能独占一行
go show()
runtime.Gosched()
fmt.Println("main")
}
Cinco oleoductos
Se puede utilizar para la sincronización de rutina
package main
import (
"fmt"
)
var ch1 = make(chan int)
//创建全局channel
var num int = 0
func show(){
<-ch1//当管道没有数据,会阻塞在这一步
fmt.Println("num=",num)
}
func add(){
num++
ch1<-9
}
func main() {//g语言中的 ‘{’ 不能独占一行
go add()
go show()
for{//主协程阻塞
}
}
Resultados La
corrutina principal está bloqueada y la tubería está bloqueada. Solo después de que se pueda imprimir num ++. La
tubería se cierra con close (nombre de la tubería)