zoukankan      html  css  js  c++  java
  • go:channel(未完)

    :1)以下的所有讨论建立在包含整形元素的通道类型之上,即 chan int

      2)对于“<-”我的理解是,它可能是一个操作符(接收操作符),也

         可能是类型的一部分(如“chan<- int”表示包含整形元素的发送通道类型

    带缓冲和不带缓存的channel

    1.带缓冲:ch:=make(chan int,1)

      1)goruntine A 中包含语句 ch<-1:表示向ch发送1,若此时ch中已经有一个数据,则A阻塞在此处,直到ch中的数据被取走;

      2)goruntine A 中包含语句  <-ch:表示从ch中接收一个数据,若此时ch中无数据,则A阻塞在此处,直到有数据传入ch;  

      3)假设ch:=make(chan int,100),for i := range ch {...}通过range 在遍历 ch 的时候需要注意:

          a. range循环接收ch,直到close(ch),如果没有数据,将阻塞在此处。
          b. 当close(ch)运行后,不可向ch发送数据,但仍然可以接收ch剩余数据,直到ch中数据为空,这时range语句将结束而非阻塞。
      

    2.不带缓冲:ch:=make(chan int),此时的ch只作数据传递的作用,不能存储数据(因为它没buffer)。

      1)goruntine A 包含 ch<-1:运行到此处A立即阻塞,除非另一个goruntine B 正在执行 ch<-

        换个说法:A欲向ch发送数据,仅当B做好了从ch接收数据的准备;

      2)同理,goruntine A 包含 <-ch。A欲从ch接收一个数据,仅当B做好了向ch发送数据的准备。

      

    类型转换:一定注意chan int是一个整体

         <-chan int(v):将v转换为一个通道类型,再从该通道接收一个值(此时“<-”是一个操作符)

      (<-chan int)(v):将v转换为一个接收通道类型(此时“<-”是类型的一部分)

  • 相关阅读:
    绝对定位和浮动的区别和运用
    xhtml css 漏 整理
    网站自适应设备屏幕
    CSS 媒体查询 响应式
    js/jquery判断浏览器 & 停止加载
    回调函数之同步调用、回调、异步调用
    Flash生成HTML5动画方法
    在html页面中使用js变量
    BZOJ 4417 Luogu P3990 [SHOI2013]超级跳马 (DP、矩阵乘法)
    NOI2019游记
  • 原文地址:https://www.cnblogs.com/xiaopipi/p/4951243.html
Copyright © 2011-2022 走看看