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 关注
- 115 浏览
添加回答
举报