加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang生产者与消费者

发布时间:2020-12-16 19:15:36 所属栏目:大数据 来源:网络整理
导读:使用golang可以很容易实现,生产者与消费者功能。 实现一:(只生产一定数量数据) //写入专用通道 //一次写10条 func produce(p chan- int) { for i := 0; i 10; i++ { p - i //主线程不能产生死锁,所以此处报错 fmt.Println("send:",i) } } //消费专用通道
                                                                                                     

使用golang可以很容易实现,生产者与消费者功能。

实现一:(只生产一定数量数据)


//写入专用通道 //一次写10条 func produce(p chan<- int) {  for i := 0; i < 10; i++ {   p <- i //主线程不能产生死锁,所以此处报错   fmt.Println("send:",i)  } }  //消费专用通道 //一次只取10条 func consumer(c <-chan int) {  for i := 0; i < 10; i++ {   v := <-c   fmt.Println("receive:",v)  } }


调用:



ch := make(chan int) //只生产和消费10条记录 go produce(ch) go consumer(ch)


实现二:(自动生产与消费)



//自动消费 func autoConsumer(ch <-chan int) {   for{     select {     case  ws:=<-ch:       fmt.Println( "fmt print",ws)     default:       time.Sleep(1000*time.Millisecond)     }   } }


调用:



ch := make(chan int)  //持续生产与消费,high起来 go func() {   for{  //不断生产,一次10条     produce(ch)   } }() go autoConsumer(ch)


注意:为了保持主进程程不死掉,在main函数最下面加上这句。



for {     //心跳     time.Sleep(time.Second) }


祝好


本文来自:CSDN博客

感谢作者:e421083458

查看原文:golang生产者与消费者




查看原文:http://www.zoues.com/2016/10/20/golang%e7%94%9f%e4%ba%a7%e8%80%85%e4%b8%8e%e6%b6%88%e8%b4%b9%e8%80%85/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读