码迷,mamicode.com
首页 > 其他好文 > 详细

golang生产者消费者模型示例代码

时间:2020-06-07 15:07:34      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:生产者   import   func   消费   name   生产   cto   string   main   

`package main

import (
"fmt"
"strconv"
"time"
)

//生产者结构体
type Productor struct {
Name string
}
var Chquit = make(chan interface{}, 2)
var Bag = false
func main() {
fmt.Println("这是一个生产者消费者模型的示例")
Chscz := make(chan Productor, 5)
Chwl := make(chan Productor,5)
go scz(Chscz)
go wl(Chscz,Chwl)
go xfz(Chwl)
go monitor()
<-Chquit
fmt.Println("主协程挂了")
}

// 生产者
func scz(Chscz chan Productor) {
for{
pro := Productor {"商品" + strconv.Itoa(time.Now().Second())}
fmt.Println("生产了商品" + pro.Name)
if Bag {
fmt.Println("给主协程的退出管道写入任意字符,让主协程结束运行")
Chquit<-"Go Die"
}
time.Sleep(time.Second)
Chscz<-pro
}

}

func wl(Chscz chan Productor,Chwl chan Productor) {
for {
pro := <- Chscz
Chwl <-pro
fmt.Println("搬用了商品" + pro.Name )
}
}

func xfz(Chwl chan Productor) {
for{
pro := <-Chwl
fmt.Println("消费了商品" + pro.Name)
}

}

func monitor() {
for{
sec := time.Now().Second()
fmt.Println("当前秒数是:",sec)
time.Sleep(time.Second)
if sec == 0 {
Bag = true
return
}

}

}`

golang生产者消费者模型示例代码

标签:生产者   import   func   消费   name   生产   cto   string   main   

原文地址:https://www.cnblogs.com/warrior-tian/p/13060431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!