在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
go 关键字跟随的函数,异步执行,并且可以阻塞,类似于js 的 async 函数中 await 异步结果 协程间通过 channel 传递信息,并且 channel 带有阻塞性,加上 go函数 的阻塞性,所以函数编写类似串行执行 但还是要注意是异步执行,结果出现的时间和串行不同。 package main import( "fmt" "time" ) var ch chan int = make(chan int,2); func chPush(){ fmt.Println("before push.") for i:=0;i<5;i++{ // time.Sleep(100*time.Millisecond) ch <- i fmt.Println("push:",i) } fmt.Println("after push.") } func chPop(){ fmt.Println("before pop.") for i:=0;i<5;i++{ time.Sleep(100*time.Millisecond) // 堵塞,必须要有数据,才能读取。另外,此处读取一个数据,chPush 会立即压入一个数据
n := <- ch fmt.Println("pop:",n) } // 主线程可能会先于子协程结束,所以要某种方式等待一下 )
|
请发表评论