GO resumen de seis corrutinas

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
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

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")
}

Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí
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)

Supongo que te gusta

Origin blog.csdn.net/GreedySnaker/article/details/114451635
Recomendado
Clasificación