美文网首页
07-携程-02-携程通讯

07-携程-02-携程通讯

作者: 玄德公笔记 | 来源:发表于2021-11-21 14:41 被阅读0次

    1. 示例说明

    1.1 逻辑

    两个携程:

    • 一个调用写函数向通道中写
    • 一个调用读函数从通道中读。
      两个通道:
    • 一个接收数据
    • 一个接收结信号
      两个函数:
    • 写函数先向数据通道写,最后向结束通道写。
    • 读函数先读数据通道,读完读结束通道。

    1.2 代码结构

    image.png

    2. gorotine.go

    不写sleep的话,goland还没有输出程序就结束了。

    package gorotine
    
    import (
        "fmt"
        "time"
    )
    
    //定义两个chanel
    var chanInt chan int = make(chan int,10)
    var timeOut chan bool = make(chan bool)
    
    //定义一个函数向通道 发送数据
    func Send()  {
        time.Sleep(time.Second * 1)
        chanInt <- 1
        time.Sleep(time.Second * 1)
        chanInt <- 2
        time.Sleep(time.Second * 1)
        chanInt <- 3
        time.Sleep(time.Second * 2)
        timeOut <- true
    }
    //第一一个函数从chanel读取数据
    func Receive() {
        for{
            select {
            case num := <- chanInt:
                fmt.Println("NUM",num)
            case <- timeOut:
                fmt.Println("timeout......")
    
            }
        }
    }
    

    3. main.go

    package main
    
    import (
        "814/gorotine"
        "time"
    )
    func main () {
        go gorotine.Send()
        go gorotine.Receive()
        time.Sleep(time.Second * 60)
    }
    

    4. 执行结果

    NUM 1
    NUM 2
    NUM 3
    timeout......
    
    Process finished with the exit code 0
    

    相关文章

      网友评论

          本文标题:07-携程-02-携程通讯

          本文链接:https://www.haomeiwen.com/subject/ovvhtrtx.html