协程

与传统的系统级**线程和进程**相比,协程的大优势在于其**“轻量级”**,可以轻松创建上百万个而不会导致系统资源衰竭,而线程和进程通常多也不能超过1万个。这也是协程也叫轻量级线程的原因。

goroutine ——Go对协程的实现

go + 函数名 :启动一个协程执行函数体。

package main
import (
	"fmt"
    "time"
)

func test_Routine(){
    fmt.Println("This is one routine!!!")
}

func main(){
    go test_Routine()
    time.Sleep(1)
}

输出结果:

> Output:
command-line-arguments
This is one routine!!!
> Elapsed: 7.155s
> Result: Success

函数实现

package main 
 
import (
    "fmt"
    "time"
)
    
func Add(x, y int) {     
	z := x + y    
	fmt.Println(z) 
}    

func main() {  
    for i := 0; i < 10; i++ {
        go Add(i,i)
    }  
    time.Sleep(2)          //为了让协程都执行完
}

输出结果:

> Output:
command-line-arguments
18
12
2
0
4
14
6
16
8
10
> Elapsed: 5.067s
> Result: Success

协程之间的同步,在Go中不需要加锁利用*sync.Mutex来实现。