goroutine基础

程序1:

package main

import (
	"fmt"
	"time"
)

func test () {
	var i int
	for {
		fmt.Println(i)
		i++
		time.Sleep(time.Second)
	}
}

//main 是主进程
func main () {
	//go 开启了一个协程
	go test()
}

  这个程序的执行结果为空,因为主进程退出了。

程序2:

package main 

import (
	"fmt"
	"time"
)

func test () {
	i := 0
	for {
		fmt.Println(i)
		i++
		time.Sleep(time.Second)
	}
}

func main () {
	go test()
	time.Sleep(time.Second * 10) //将会打印10个数字,因为主进程持续了10秒才退出
}

  程序3:

    

package main

import (
    "fmt"
    "time"
)

func test () {
    i := 0
    for {
        fmt.Println(i)
        i++
        time.Sleep(time.Second)
    }
}

func main () {
    go test()

    i := 100
    for {
        fmt.Println(i)
        i--
        if i == 90 {
            break
        }
        time.Sleep(time.Second)
    }

    //将会看到两个进程交替打印数字
}

  

猜你喜欢

转载自www.cnblogs.com/zhangxiaoj/p/11258729.html