1 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的消費(fèi)者應(yīng)該循環(huán)運(yùn)行,這已經(jīng)提到過(guò)。
更改消費(fèi)者的第一個(gè)參數(shù),使其為 achan string而不是字符串。這樣生產(chǎn)者就可以不斷地寫(xiě)入這個(gè)通道,讓消費(fèi)者在另一個(gè)通道上發(fā)布,直到時(shí)間限制到期。
func consumer(consumeChan chan string, outCh chan string) {
for {
select {
case s := <- consumeChan:
s = strings.ToUpper(s)
outCh <- s
}
}
}
現(xiàn)在在go consumer()調(diào)用之前的 main func 中,您正在等待c1生產(chǎn)者對(duì)頻道的第一個(gè)響應(yīng)。c1而不是將通道作為第一個(gè)參數(shù)傳遞。
func main() {
s := []string{"one", "two", "three", "four"}
c1 := make(chan string)
d1 := make(chan string)
go producer(s, c1)
go consumer(c1, d1)
stop := time.After(2000 * time.Millisecond)
for {
select {
case <-stop:
fmt.Println("STOP AFTER 2 SEC!")
return
case response := <- d1:
fmt.Println(response)
time.Sleep(50 * time.Millisecond)
}
}
}
這應(yīng)該向您展示生產(chǎn)者在通道上連續(xù)寫(xiě)入隨機(jī)數(shù)c1,以及消費(fèi)者在 d1 通道上連續(xù)寫(xiě)入所有大寫(xiě)文本,直到 2 秒結(jié)束。
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報(bào)