Go并发编程基础

约 2 分钟读完

Go并发编程基础

Goroutine

Goroutine 是 Go 的轻量级线程,创建成本极低(几KB 内存),可以轻松创建数万个并发任务。

go func() {
    fmt.Println("running in goroutine")
}()

Channel 通信

Channel 是 Goroutine 之间安全通信的机制:

ch := make(chan string, 100)

go func() {
    ch <- "result"
}()

result := <-ch

并发端口扫描器

func scanPort(host string, port int, results chan<- string) {
    addr := fmt.Sprintf("%s:%d", host, port)
    conn, err := net.DialTimeout("tcp", addr, time.Second)
    if err == nil {
        conn.Close()
        results <- fmt.Sprintf("Port %d open", port)
    }
}

func main() {
    results := make(chan string, 100)
    for port := 1; port <= 1024; port++ {
        go scanPort("target", port, results)
    }
    // 收集结果...
}

sync 包

  • sync.WaitGroup:等待一组 Goroutine 完成
  • sync.Mutex:互斥锁保护共享资源
  • sync.Map:并发安全的 Map

总结

Go 的并发模型是其最大优势之一。利用 Goroutine + Channel 可以轻松构建高性能的并发扫描工具。

← Go网络编程实战 Go安全生态与社区资源 →