zoukankan      html  css  js  c++  java
  • Go Example--通道非阻塞

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	messages := make(chan string)
    	signals := make(chan bool)
    
    	//常规的通过通道发送和接收数据是阻塞的。然而,我们可以使用带一个 default子句的 select 来实现非阻塞 的发送、接收,甚至是非阻塞的多路 select
    	select {
    	case msg := <-messages:
    		fmt.Println(msg)
    	default:
    		fmt.Println("no message received")
    	}
    
    	msg := "hi"
    	select {
    	case messages <- msg:
    		fmt.Println("sent message", msg)
    	default:
    		fmt.Println("no message sent")
    	}
    
    	select {
    	case msg := <-messages:
    		fmt.Println(msg)
    	case sig := <-signals:
    		fmt.Println(sig)
    	default:
    		fmt.Println("no activity")
    	}
    }
    
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    1236:区间合并
  • 原文地址:https://www.cnblogs.com/promenader/p/9816833.html
Copyright © 2011-2022 走看看