zoukankan      html  css  js  c++  java
  • go routine

    无缓冲 channel 是在多个 goroutine 之间同步很棒的工具。

    当在 Go 中用 ch := make ( chan bool ) 创建 chennel 时,bool 型的 无缓冲 channel 会
    被创建。这对于程序来说意味着什么呢?首先,如果读取( value := <− ch )它将会
    被阻塞,直到有数据接收。其次,任何发送( ch <− 5 )将会被阻塞,直到数据被读出。
    无缓冲 channel 是在多个 goroutine 之间同步很棒的工具。
    不过 Go 也允许指定 channel 的缓冲大小,很简单,就是 channel 可以存储多少元素。
    ch := make ( chan bool , 4) ,创建了可以存储 4 个元素的 bool 型 channel。在这个
    channel 中,前 4 个元素可以无阻塞的写入。当写入第 5 ? 元素时,代码 将会 阻塞,直
    到其他 goroutine 从 channel 中读取一些元素,腾出空间。
    一句话说,在 Go 中下面的为 true:
    ch := make ( chan type , value)
    {
    value == 0 → 无缓冲
    value > 0 → 缓冲 value 的元素

    }

    关闭 channel
    当 channel 被关闭后,读取端需要知道这个事情。下面的代码演示了如何检查 channel
    是否被关系。
    x, ok = <− ch
    当 ok 被赋值为 true 意味着 channel 尚未被关闭, 同时 可以读取数据。否则 ok 被赋
    值为 false 。在这个情况下表示 channel 被关闭。
    只读或只写 channel

  • 相关阅读:
    sql.srcipt
    sowmodaldialog
    4) 删除虚拟应用程序
    JavaScript读写Cookies
    第5章 脚本运行期库对象
    npm serve md 工具 [MD]
    cleanmark 清除格式 博客内容提取 [MD]
    Hex编码 十六进制编码
    Windows Server AppFabric(Codename:"Dublin&Velocity")介绍
    WF4设计器模型:编辑范围ModelEditingScope
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6501436.html
Copyright © 2011-2022 走看看