如下代码:
package main
import (
"fmt"
"time"
)
//goroutine
//python java C++多进程和多线程编程
//go诞生的比较晚,多进程->多线程->协程 web2.0开发逐渐主流,高并发
//多线程-每个线程占用的内存比较多,而且系统切换开销很大,上千,绿程/轻量级线程(协程)-用户态的线程
//go语言一开始的时候就没有打算让我们实例化一个线程 - 协程
//那为什么go的协程那么火,go没有历史包袱,
func p() {
for {
fmt.Println()
}
}
func print() {
fmt.Println("sbwwj")
}
func main() {
for i := 0; i < 100; i++ {
//闭包的特性
go func(n int) {
fmt.Println(n)
time.Sleep(time.Second)
}(i)
}
go print() //这样就会将print放到协程中运行
/*go func() {
for {
fmt.Println(1)
}
}()*/
//主死从随
time.Sleep(time.Second * 2)
fmt.Println("hello")
}
此时不会使main函数的中循环创建协程打印可能相同的数字。