版权声明:微信公众号 java架构狮 欢迎转载 请注明出处 https://blog.csdn.net/AlbertFly/article/details/89087617
1 goroutinue可以实现并行,也就是说,多个协程可以在多个处理器同时跑。而...channel实际上是一个有类型的消息队列,遵循先进先出的特点
package main
import "fmt"
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
value := <-ch
if value == 1 {
fmt.Println("qq的羊驼")
}
select {
case <-ch:
fmt.Println("咖啡色的羊驼")
case <-ch:
fmt.Println("黄色的羊驼")
}
}
先进先出的理解
程序输出:
qq的羊驼
黄色的羊驼
或者是
qq的羊驼
咖啡色的羊驼
2 grouting两个 之间信息通讯
package main
import (
"fmt"
"time"
)
var gqueue = make(chan int, 10000)
var isEndChannel = make(chan int)
func put() {
for sum := 1; sum < 5; {
sum += 1
gqueue <- sum
time.Sleep(time.Second)
}
//执行完成 通知main函数结束.
//isEndChannel <- 0
}
func get() {
for {
value := <-gqueue
fmt.Println(value)
fmt.Println("执行一次")
time.Sleep(time.Second)
}
}
func main() {
go put()
go get()
fmt.Println(<-isEndChannel)
}