有大佬可以帮忙看看 SendToProc 这个函数里 select+slice 会 panic 吗?感谢感谢🙏
func init() {
Chan = make(chan *GenData, 500000)
}
var Chan chan *GenData
type SendQueue struct {
queue []*GenData
size int
}
type GenData struct {
s string
}
func SendToProc() error {
go func() {
batchSize := 100
tc := time.NewTicker(time.Millisecond * 100)
sq := &SendQueue{
queue: make([]*GenData, 0),
size: 0,
}
for {
select {
case g := <-Chan:
sq.queue = append(sq.queue, g)
sq.size++
if sq.size == batchSize {
send(sq.queue)
sq.queue = sq.queue[:0]
sq.size = 0
}
case <-tc.C:
if sq.size > 0 {
send(sq.queue)
sq.queue = sq.queue[:0]
sq.size = 0
}
}
}
}()
return nil
}
func send(sendList []*GenData) {
for i, v := range sendList {
fmt.Println(i, v)
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.