如何让每个员工使用Map Channel



我的代码段:

主要工人

func Workergrab(m map[int][][]string, ch chan [][]string, wg *sync.WaitGroup) {
    for y := 1993; y <= 2014; y++ {
        ch <- m[y]
    }
    wg.Done()
}

工作1

fmt.Println(<-ch)

好的,这就是我想做的

-> Main-Worker grabbing map data from m[y] and send it over to channel
-> Worker1 do get data from channel that main worker send at same time depend on y

我已经试过了,工作人员1只给我看m[1993]的数据混乱

我想知道使用地图频道,但不确定如何制作地图频道。我觉得频道搞砸了。。。,我想知道我该怎么做map[int][][]字符串,因此我的worker1将从每个ID的通道捕获数据";1993"1994";等等。

运行代码会引发all goroutines are asleep - deadlock!错误;这意味着两个goroutine都结束了,或者永远等待在写作/阅读部分。

Workergrab试图向ch通道发送多个值,但Worker1仅打印一个ch值并完成其工作。因此,将Worker1更改为以下内容可以解决问题:

func Worker1(ch chan [][]string) {
    for {
        fmt.Println(<-ch)
    }
}

最新更新