zoukankan      html  css  js  c++  java
  • channel

    1.what‘s chanel?

      信道是什么?简单说,是goroutine之间互相通讯的东西。类似我们Unix上的管道(可以在进程间传递消息), 用来goroutine之间发消息和接收消息。其实,就是在做goroutine之间的内存共。

    2.hot to use?

      example: 

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    
    	a := make(chan int)
    	go func(){
    		for i:=0; i<= 5; i++{
    			a<-i
    			time.Sleep(time.Second * 1)
    		}
    		close(a)
    	}()
    	go func(){
    		for {
    			select {
    			case x, ok := <- a :
    				if ok{
    					fmt.Println(x)
    					time.Sleep(time.Second * 2)
    				}else{
    					fmt.Println("over")
    					return
    				}
    
    			}
    		}
    	}()
    
    	time.Sleep(time.Second * 15)
    
    }
    

      

    3.trouble shouting

      1fatal error: all goroutines are asleep - deadlock!

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        a := make(chan int)
        //go func(){
            for i:=0; i<= 5; i++{
                a<-i
                time.Sleep(time.Second * 1)
            }
            close(a)
        //}()
        go func(){
            for {
                select {
                case x, ok := <- a :
                    if ok{
                        fmt.Println(x)
                        time.Sleep(time.Second * 2)
                    }else{
                        fmt.Println("over")
                        return
                    }
    
                }
            }
        }()
    
        time.Sleep(time.Second * 15)
    
    }

      a 为非缓冲的channel,在main方法的主线程中输入第一个数据的时候,channe阻塞,直接挂起。导致程序无法进行下去。然后报错。

      正确的使用channel是有发有收。

    没有什么是写一万遍还不会的,如果有那就再写一万遍。
  • 相关阅读:
    bzoj4555
    bzoj4516
    树莓派/Debian 挂载硬盘
    树莓派/Debian Apache2 安装腾讯云 SSL 证书
    2019-2020-2《网络对抗技术》 Exp2 后门原理与实践
    kali 开启 SSH 服务
    Docker 入门 7 构建镜像
    Docker 入门 6 获取、加速镜像.md
    Docker 入门 5 数据管理
    Docker 入门 4 容器端口映射 和 Nginx 演示部署
  • 原文地址:https://www.cnblogs.com/waken-captain/p/9790818.html
Copyright © 2011-2022 走看看