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

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

程序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:class

    

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

    //将会看到两个进程交替打印数字
}
相关文章
相关标签/搜索