go 语言之 生产者消费模型

时间:2023-03-09 02:27:54
go 语言之 生产者消费模型

简易的生产者消费模型,通过管道【也可以理解为队列】,管道是先进先出,主要是理解chan

生产者使用make将chan初始化,并且设置chan长度,如果不设置,生产者就写入不了通道

go 是使用线程开始,并且使用多核(这个感觉会比python好)

欢迎大家一起指导学习

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package main
import (
    "fmt"
    "time"
)
var Foo chan string
func main()  {
    Foo = make(chan string,10)
    go makefoo()
    go eatFoo()
    time.Sleep(time.Hour)
}
func makefoo()  {
    i := 0
    for{
        i ++
        foo :=  fmt.Sprintf("包子%d号",i)
        Foo <- foo
        fmt.Println("Alex生产驴肉馅的",foo)
        time.Sleep(time.Second * 1)
    }
}
func eatFoo()  {
    for{
        data := <- Foo
        fmt.Println("瞎驴吃了:",data)
        time.Sleep(time.Second * 3)
    }