目录
【1】go协程和主线程:
1、Go主线程(有程序员直接称为线程/也可以理解成进程): 一个Go线程上,可以起多个协程,你可以这样理解,协程是轻量级的线程。
2、go协程的特点
2.1、有独立的栈空间
2.2、共享程序堆
2.3、空间调度由用户控制
2.4、协程是轻量级的线程
【2】并行和并发的区别
并发的特点:
1.多个任务作用在一个cpu2.从微观的角度看,在一个时间点上,其实只有一个任务在执行
并行的特点:
1.多个任务作用在多个cpu2.从微观的角度看,在一个时间点上,就是多个任务在同时执行.
3.这样看来,并行的速度快
【3】设置cpu数量
package main
import (
"fmt"
"runtime"
)
func main() {
cpuNum := runtime.NumCPU()
fmt.Println("cpuNum = ", cpuNum)
//设置指定数量的cpu运行go程序
runtime.GOMAXPROCS(cpuNum - 1)
}
【4】使用协程
使用 go 可以并行执行代码程序
package main
import (
"fmt"
"time"
)
func test() {
for i := 0; i < 10; i++ {
fmt.Println("hello world! -- test()")
time.Sleep(time.Second)
}
}
func main() {
go test()
for i := 0; i < 10; i++ {
fmt.Println(" hello world! ~~ main()")
time.Sleep(time.Second)
}
}