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

  • 相关阅读:
    php str_ireplace()函数 语法
    php str_replace()函数 语法
    php substr()函数 语法
    php implode()函数 语法
    php explode()函数 语法
    php strtok()函数 语法
    php chunk_split()函数 语法
    php strnatcasecmp()函数 语法
    php strnatcmp()函数 语法
    php strncasecmp()函数 语法
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/6501436.html
Copyright © 2011-2022 走看看