我在我的 go 程序中实现了网络套接字,以便在其他进程发生时定期在后台更新三个变量。自从这样做以来,程序几乎立即开始占用 100% 的 CPU 使用率,我不确定为什么。
这里是有问题的代码:
streamOneHandler := func(event *websockets.Event) {
varOne, err = strconv.ParseFloat(event.Number, 64)
}
streamTwoHandler := func(event *websockets.Event) {
varTwo, err = strconv.ParseFloat(event.Number, 64)
}
streamThreeHandler := func(event *websockets.Event) {
varThree, err = strconv.ParseFloat(event.Number, 64)
}
errHandler := func(err error) {
fmt.Println(err)
}
streamOne, err = websockets.WsEventServe("string1", streamOneHandler, errHandler )
if err != nil {
log.Fatal(err)
}
streamTwo, err = websockets.WsEventServe("string2", streamTwoHandler, errHandler )
if err != nil {
log.Fatal(err)
streamThree, err = websockets.WsEventServe("string3", streamThreeHandler, errHandler )
if err != nil {
log.Fatal(err)
}
go func() {
<- streamOne
<- streamTwo
<- streamThree
}()
如果您能帮助找出导致 CPU 使用率大幅飙升的原因,我们将不胜感激。
最佳答案
当您在 goroutine 中有一个无限循环时,就会发生这种情况。很难看出您发布的代码子集发生了什么。但这就是原因。
关于go - 在 go 程序后台运行的 Websockets 导致 100% CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49105119/