美文网首页
缓冲通道与非缓冲通道

缓冲通道与非缓冲通道

作者: zzjack | 来源:发表于2017-10-19 21:49 被阅读0次

非缓冲通道

1.先接收后发送,没有接收之前发送不能完成,会被阻塞住。
2.由于第1点,说明非缓冲通道是同步的。
3.由于第1点,说明非缓冲通道并不能使得程序性能提高。

  1. 发送端每次都需要确保元素值已被接收的情况下,使用非缓冲通道是合适的。

缓冲通道

  1. 缓冲通道就是队列。
  2. 使用缓冲通道,能够进行异步处理,提高程序性能。

goto的使用

goto用来打破for死循环

func main(){
    unbufchan := make(chan int)
    sign := make(chan byte,2)
    go func(){
        for i := 0;i<10;i++{
            select {
            case unbufchan <- i:
                case unbufchan <- i+10:
            default:
                fmt.Println("default")
            }
            time.Sleep(time.Second)
        }
        close(unbufchan)
        fmt.Println("the channel is closed")
        sign <- 0
    }()

    go func(){
        loop:
            for {
                select {
                case e,ok := <- unbufchan:
                    if !ok{
                        fmt.Println("closed channel")
                        break loop
                    }
                    fmt.Println("e=>",e)
                    time.Sleep(2*time.Second)
                }
            }
            sign <- 1
    }()
    <- sign
    <- sign
}

定时器timer.Reset的使用

if timer == nil{
  timer = time.NewTimer(time.Millisecond)
} else{
  timer.Reset(time.Millisecond)
}

拼凑时间

//3小时20分钟
3*time.Hour+20*time.Minute

相关文章

  • 缓冲通道与非缓冲通道

    非缓冲通道 1.先接收后发送,没有接收之前发送不能完成,会被阻塞住。2.由于第1点,说明非缓冲通道是同步的。3.由...

  • Go channel-2

    缓冲通道 非缓冲通道: make(chan T)一次发送,一次接受,都是阻塞式的 缓冲通道:make(chan T...

  • NIO代码记录

    Buffer 缓冲 Channel通道 阻塞 非阻塞 管道

  • Java NIO之Buffer

    Java NIO中的Buffer用于和NIO通道进行交互。数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本...

  • Java NIO中的Buffer

    Java NIO中的Buffer用于和NIO通道进行交互。数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本...

  • channel详解

    无缓冲通道 只有当读写都准备好时才不会被阻塞 输出: 有缓冲通道 当有缓冲通道长度未满时,写入是无阻塞的 输出: ...

  • Java NIO(2) - 缓冲区(Buffer)

    3. 缓冲区(Buffer)和通道(Channel) Java NIO系统的核心在于:通道(Channel)和缓冲...

  • 第一个goroutine + channel 程序

    无缓冲通道TODO: ...... 有缓冲通道TODO: ...... channel 模拟 生产者和消费者 Ti...

  • Netty源码之写入数据

    写入数据,是从缓冲区写入到通道中。读取数据和写入数据是相对概念,从通道读取到缓冲区,从缓冲区写入到通道。Pipel...

  • NIO复制文件的三种方式对比

    方式一:利用通道完成文件的复制(非直接缓冲区) 运行三次的时间分别为:用通道完成文件的复制(非直接缓冲区)耗时为1...

网友评论

      本文标题:缓冲通道与非缓冲通道

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