GO语言通用生产消费模型
来源:互联网 发布:淘宝虚假代理 编辑:程序博客网 时间:2024/04/26 06:56
pcmode.go
package pcmodelimport "sync"type callback func(ch chan interface{})type PCModel struct {wg *sync.WaitGroupch chan interface{}ProducerConsumer}type Producer struct {wg *sync.WaitGroupch chan interface{}pfunc callback}type Consumer struct {wg *sync.WaitGroupch chan interface{}cfunc callback}func NewPCModel(pfunc callback, cfunc callback) *PCModel {model := PCModel{}model.wg = &sync.WaitGroup{}model.ch = make(chan interface{})model.Producer = *NewProducer(model.wg, model.ch, pfunc)model.Consumer = *NewConsumer(model.wg, model.ch, cfunc)return &model}func NewProducer(wg *sync.WaitGroup, ch chan interface{}, f callback) *Producer {p := Producer{}p.wg = wgp.ch = chp.pfunc = freturn &p}func NewConsumer(wg *sync.WaitGroup, ch chan interface{}, f callback) *Consumer {c := Consumer{}c.wg = wgc.ch = chc.cfunc = freturn &c}func (p *Producer) Produce() {p.wg.Add(1)go func(ch chan interface{}) {defer p.wg.Done()p.pfunc(ch)close(ch)}(p.ch)}func (c *Consumer) Consume() {c.wg.Add(1)go func(ch chan interface{}) {defer c.wg.Done()c.cfunc(ch)}(c.ch)}func (pc *PCModel) Wait() {pc.wg.Wait()}
使用方法如下:
package mainimport ("fmt""pcmodel")func ImportData(ch chan interface{}) {for i := 0; i < 10; i++ {ch <- i}}func ExportData(ch chan interface{}) {for data := range ch {fmt.Println(data)}}func main() {pc := pcmodel.NewPCModel(ImportData, ExportData)pc.Produce()pc.Consume()pc.Wait()}
阅读全文
0 0
- GO语言通用生产消费模型
- 生产消费模型demo
- 生产-消费模型
- 线程_生产消费模型
- 程序设计模型之生产消费模型
- 生产/消费模型的java实现
- java 线程“生产/消费”模型1
- java线程“生产/消费”模型2
- 生产消费模型实例C++11
- wait/notify实现生产消费模型
- 多线程—NSThread实现生产消费模型。
- 生产/消费模型的java实现
- 阻塞队列实现--生产消费模型
- Wait, notify实现的生产消费模型
- 生产消费
- 生产消费
- Go语言内存模型
- Go语言内存模型
- MYSQL初学者使用指南
- django+nginx+uwsgi 部署问题
- 阿里云服务器配置FTP账号
- HDU
- 找出这个数(难度:半颗星)
- GO语言通用生产消费模型
- Android面试题—校招—京东
- ie内核无法显示,Chrome内核可以显示
- 预处器的对比——Sass、LESS和Stylus
- 泛型的用法
- Java的多线程问题
- 交叉编译的参数简述--build、host和target
- iOS自定义绘制
- 相同字段合并--两个表,并却关联关系表