zoukankan      html  css  js  c++  java
  • golang channel

    CSP

    channel 带缓冲与不带缓冲的区别

    • 无缓存的Channel上的发送操作总在对应的接收操作完成前发生.
    • 有缓存的Channel相当于一个消息队列,先进先出

    range和close

    发送者可以通过close关闭一个信道来表示没有需要发送的值了。接收者可以通过为接收表达式分配第二个参数来测试信道是否被关闭:若没有值可以接收且信道已被关闭,那么在执行完

    v,ok := <-ch
    

    之后 ok 会被设置为 false。

    循环 for i := range c 会不断从信道接收值,直到它被关闭。

    注意:* 只有发送者才能关闭信道,而接收者不能。向一个已经关闭的信道发送数据会引发程序恐慌(panic)。

    还要注意:* 信道与文件不同,通常情况下无需关闭它们。只有在必须告诉接收者不再有需要发送的值时才有必要关闭,例如终止一个 range 循环。

    select语句

    select语句使一个Go程可以等待多个信道操作。
    select会阻塞到某个分支可以继续执行为止,这时就会执行该分支。当多个分支都准备好时会随机选择一个执行。

  • 相关阅读:
    (find) nyoj5-Binary String Matching
    (replace find)nyoj113-字符串替换
    (去重 sort)nyoj8-一种排序
    (模拟 打好基础) nyoj1363-计划日
    一种颜色怎么搭配
    动态识别类型
    swift与OC混合编程
    IOS动画效果
    NSAlert
    NSButton文本颜色设置和Action两种状态行为
  • 原文地址:https://www.cnblogs.com/azi-v/p/channel.html
Copyright © 2011-2022 走看看