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

    //將會看到兩個進程交替打印數字
}
相關文章
相關標籤/搜索