// rpcbug project main.go package main import ( "fmt" "net" ) const ( MaxDialsCount = 1000000 ) var dialsCount int func main() { sem := make(chan interface{}, 1) tcpAddr, _ := net.ResolveTCPAddr("tcp", "localhost:50001") for dialsCount < MaxDialsCount { dialsCount++ go func(dc int) { conn, err := net.DialTCP("tcp", nil, tcpAddr) if err == nil { fmt.Printf("! After %d dials: %v %v\n", dc, conn, tcpAddr) } <-sem }(dialsCount) if dialsCount % 50000 == 0 { println(dialsCount) } sem <- nil } fmt.Printf("Done %d dials successfully\n", MaxDialsCount) }