1 回答

TA貢獻2041條經驗 獲得超4個贊
每次啟動 goroutine 后,原始代碼會阻塞,等待通過非緩沖通道發送一個值,此外,當WaitGroup
倒計時時通道關閉,這也關閉了接收端的通道。
恕我直言,一般規則是:
不要從接收方關閉通道,如果通道有多個并發發送方,也不要關閉通道。
package main
import (
"fmt"
"strings"
)
type StratNotification struct {
Symbol string
}
func GetSymbols() []StratNotification {
return []StratNotification{
{Symbol: "a"},
{Symbol: "b"},
{Symbol: "c"},
{Symbol: "d"},
}
}
func RunIntradayScanner() {
symbols := GetSymbols()
var intradayChannel = make(chan StratNotification)
for _, s := range symbols {
go IntradayStratify(strings.TrimSpace(s.Symbol), intradayChannel)
}
for _ = range symbols {
s := <-intradayChannel
fmt.Println(s)
}
}
func IntradayStratify(ticker string, c chan StratNotification) {
// do some heavy lifting
fmt.Println(ticker)
c <- StratNotification{}
}
func main() {
RunIntradayScanner()
}
- 1 回答
- 0 關注
- 113 瀏覽
添加回答
舉報