Golang实现生产者和消费者

packagemain

import(

"fmt"

"sync"

)

//实现一个生产者和消费者

/*生产者产生数据添加到通道里面,消费者消费数据从通道里面

不带缓存实现

*/

funcmain(){

ch:=make(chanint)

varwgsync.WaitGroup

wg.Add(2)

goproducers(&wg,ch)

goconsumer(&wg,ch)

wg.Wait()

}

//生产者

funcproducers(wg*sync.WaitGroup,chchanint){


fori:=0;i<10;i++{

fmt.Println("send:",i)

ch<-i

}

close(ch)

wg.Done()

}

//消费者

funcconsumer(wg*sync.WaitGroup,chchanint){

forv:=rangech{

fmt.Println("recv:",v)

}

wg.Done()

}

���$�

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 01.{ 换行: Opening Brace Can't Be Placed on a Separate Lin...
    码农不器阅读 2,425评论 0 14
  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 1,132评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 并发concurrency -很多人都是冲着Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,gor...
    战神汤姆阅读 329评论 0 0
  • 公元15年9月6日,只身投奔长沙,冠冕堂皇地说是追逐梦想,其实也只有自己明白,这完全是一场不折不扣的出逃。高考失利...
    裘霖阅读 405评论 0 4