当前位置:   article > 正文

Golang 协程-非阻塞通道_golang non-blocking channel

golang non-blocking channel

non-blocking-channel-operations.go

  1. package main
  2. import "fmt"
  3. func main() {
  4. // 常规的通过通道发送和接收数据是阻塞的。然而,我们可以 使用带一个 default 子句的 select 来实现非阻塞 的 发送、接收,
  5. // 甚至是非阻塞的多路 select
  6. messages := make(chan string)
  7. signals := make(chan bool)
  8. select {
  9. case msg := <-messages:
  10. fmt.Println("received message:", msg)
  11. default:
  12. fmt.Println("no message received")
  13. }
  14. msg := "hi"
  15. select {
  16. case messages <- msg:
  17. fmt.Println("sent message:", msg)
  18. default:
  19. fmt.Println("no message sent")
  20. }
  21. select {
  22. case msg := <-messages:
  23. fmt.Println("received message:", msg)
  24. case sig := <-signals:
  25. fmt.Println("received signal:", sig)
  26. default:
  27. fmt.Println("no activity")
  28. }
  29. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/714393
推荐阅读
相关标签
  

闽ICP备14008679号