我在Go中编写minecraft服务器,当服务器受到2000多个连接的压力时,我得到了这个崩溃:
致命错误:并发映射读取和映射写入/ root/work/src/github.com/user/imoobler/limbo.go:78 + 0x351由main.main /root/work/src/github.com/user/imoobler创建/limbo.go:33 + 0x368
我的代码:
package main
import (
"log"
"net"
"bufio"
"time"
"math/rand"
"fmt"
)
var (
connCounter = 0
)
func main() {
InitConfig()
InitPackets()
port := int(config["port"].(float64))
ln, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
if err != nil {
log.Fatal(err)
}
log.Println("Server launched on port", port)
go KeepAlive()
for {
conn, err := ln.Accept()
if err != nil {
log.Print(err)
} else {
connCounter+=1
go HandleConnection(conn, connCounter)
}
}
}
func KeepAlive() {
r …Run Code Online (Sandbox Code Playgroud)