go chan 缓冲却别 code

package main

import (
    "fmt"
    _"time"

    "time"
)

func MyRoutineFunc(ch chan int) {
    // 函数处理
    ch <- 123
    time.Sleep(time.Second*1)

    fmt.Println("MyRoutineFunc process finished.")
}

func test(){
    fmt.Println("123")
}
func main() {

    //var mychan = make(chan int,12)
    var mychan = make([]chan int, 10)

    mychan[1] = make(chan int,1)  //注意这个1   不要协程得话必须写  有协程竟然不用写
    //go MyRoutineFunc(mychan[1])   //协程这里面竟然不用指定chan的长度就可以 插进去
     MyRoutineFunc(mychan[1])
    //mychan[1]<-123
    //close(mychan[1])
    rb,ok:= <-mychan[1]  //阻塞  协程里sleep了  这里也等了1秒  但是如果协程去掉的话  会直接报错  说明底层是知道  到底有没程序会操作这个chan的
    //<-mychan[1]
    //rb2,ok:= <-mychan
    fmt.Println(rb,ok,66666666,
    //,rb2
    )
return

    chs := make([]chan int,10)

    for i := 0; i < 10; i++ {
        chs[i] = make(chan int)
        go MyRoutineFunc(chs[i])  //? 为什么这个打印不出来呢
        //go test()

        //time.Sleep(time.Second * 1/10)

    }

    for k, ch := range chs {

        i,ok:=
            <-ch
        //_,ok2:=
        //    <-ch
        fmt.Println(i,"--",k,ok)
    }

    fmt.Println("All goroutine finished.")
}

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!

添加新评论

  关于博主【WANG-FEiHU】

Duplicate
-----------Complicate
--------------------------Appreciate
-----------------------------------------Fate

闻先后,术专攻
三人有师
习得文武艺,货与帝王家
人性不曾变,资本永无眠

-----------花有重开日,人无再少年-----------

  分类目录

  monitor(TD)

每个人心里都有一段伤痕,时间才是最好的疗剂。

人总是珍惜未得到的,而遗忘了所拥有的。

看铁蹄铮铮,踏遍万里河山,我站在风口浪尖紧握住,日月旋转

人生有两大痛苦:一是愿望得不到满足,二是愿望得到了满足。

往前一步是黄昏,退后一步是人生

你美目如当年 流转我心间

人海中再回首,朋友真诚依旧,生命里重逢,心境平和温柔,往事如风,岁月如歌,漫漫人生路,苍桑几许,幸福几何!