[ Golang管道,与共享变量使用 ]


main.go

package main

import (
    "fmt"
    "sync"
    "time"
)

// 全局变量
var mp sync.Map

func syncGolbal() {
    if v, exists := mp.Load("name"); exists {
        fmt.Println(v)
    } else {
        mp.Store("name", "chf")
    }
}

// 管道
type Task struct {
    A int
    B int
}

var ch = make(chan Task, 100) // 创建管道, 容量100

// 生产者
func producer() {
    for i := 0; i < 10; i++ {
        // 往管道插入
        ch <- Task{A: i + 3, B: i - 8}
    }
}

// 消费者
func consumer() {
    var task Task
    var sum int
    for i := 0; i < 10; i++ {
        task = <-ch
        sum = task.A + task.B
        fmt.Println(sum)
    }
}

func main() {
    // go syncGolbal()
    // go syncGolbal()
    // go syncGolbal()
    // go syncGolbal()
    go producer()
    go consumer()
    time.Sleep(time.Second)
}