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

标签 go websocket gorilla

我在我的 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/

相关文章:

javascript - 如何连接Websocket API?

ios - iOS Swift Web Socket SRWebSocket设置响应超时

go - 使用 gorilla mux 子路由器时如何获得完整的请求路径?

go - if 语句中的变量范围

go - 找不到 attrmgr(来自 $GOROOT)和 $GOPATH?

govendor 不导入较新的版本

json - 将 session 和 JSON 数据写入 http.ResponseWriter

asp.net-mvc - 通过 .net MVC 调用 Go 命令

playframework - 基于 "resource"连接的客户端正在处理的 BroadcastHub 过滤?

session - golang go-endpoints Session 使用 gorilla-toolkit