在go程序的后台运行的Websockets导致100%的CPU使用率

问题描述 投票:-1回答:1

我已经在我的go程序中实现了web套接字,以便在其他进程发生时定期更新后台的三个变量。由于这样做,程序几乎立即开始占用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使用率大幅上升的原因都将受到高度赞赏。

go websocket gorilla
1个回答
0
投票

当你在goroutine中旋转无限循环时会发生这种情况。很难看出你发布的代码子集在哪里发生了什么。但这就是原因。

© www.soinside.com 2019 - 2024. All rights reserved.