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()

}

���$�

推荐阅读更多精彩内容

  • fmt格式化字符串 格式:%[旗标][宽度][.精度][arg索引]动词旗标有以下几种:+: 对于数值类型总是输出...
    皮皮v阅读 313评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 67,693评论 12 114
  • 并发concurrency -很多人都是冲着Go 大肆宣扬的高并发而忍不住跃跃欲试,但其实从源码的解析来看,gor...
    14de179c3a39阅读 82评论 0 0
  • 公元15年9月6日,只身投奔长沙,冠冕堂皇地说是追逐梦想,其实也只有自己明白,这完全是一场不折不扣的出逃。高考失利...
    裘霖阅读 97评论 0 4
  • 今天敢于做别人不敢做的事,明天才可以拥有别人不能拥有的财富!未来是自己的!不是能不能,而是要不要,为自己而努力!越...
    Lzr_2017阅读 13评论 0 2