如何让每个worker都使用Map Channel?
How to make each worker work with 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
上面我已经试过了,worker1只给我m[1993]的数据。 一团糟
我想知道使用贴图通道,但不确定如何制作贴图通道。
我认为频道的事情搞砸了......,
我想知道如何制作频道
map[int][][]string 所以我的 worker1 将从每个 ID“1993”、“1994”等的通道捕获数据...
运行 您的代码抛出 all goroutines are asleep - deadlock!
错误;这意味着两个 goroutine 都已结束或永远等待 writing/reading 部分。
Workergrab
尝试向 ch
通道发送多个值,但 Worker1
仅打印一个 ch
值并完成其工作。所以把Worker1
改成下面这样就可以解决问题:
func Worker1(ch chan [][]string) {
for {
fmt.Println(<-ch)
}
}
我的代码片段:
主要工人:
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
上面我已经试过了,worker1只给我m[1993]的数据。 一团糟
我想知道使用贴图通道,但不确定如何制作贴图通道。 我认为频道的事情搞砸了......, 我想知道如何制作频道 map[int][][]string 所以我的 worker1 将从每个 ID“1993”、“1994”等的通道捕获数据...
运行 您的代码抛出 all goroutines are asleep - deadlock!
错误;这意味着两个 goroutine 都已结束或永远等待 writing/reading 部分。
Workergrab
尝试向 ch
通道发送多个值,但 Worker1
仅打印一个 ch
值并完成其工作。所以把Worker1
改成下面这样就可以解决问题:
func Worker1(ch chan [][]string) {
for {
fmt.Println(<-ch)
}
}