高并发网络编程:使用Go WaitGroup实现并发服务器

   2025-02-20 5500
核心提示:以下是使用Go的WaitGroup实现高并发服务器的示例代码:package mainimport (fmtnetsync)func handleRequest(conn net.Conn) {def

以下是使用Go的WaitGroup实现高并发服务器的示例代码:

package mainimport ("fmt""net""sync")func handleRequest(conn net.Conn) {defer conn.Close()// 处理请求的逻辑,这里只是简单地回复一个消息message := "Hello from server"conn.Write([]byte(message))}func main() {// 创建一个WaitGroup来等待所有goroutine完成var wg sync.WaitGroup// 启动并发服务器监听端口ln, err := net.Listen("tcp", ":8080")if err != nil {fmt.Println("Failed to listen:", err)return}fmt.Println("Server listening on port 8080")// 接受并处理客户端连接for {conn, err := ln.Accept()if err != nil {fmt.Println("Failed to accept connection:", err)continue}// 每个连接启动一个goroutine来处理请求wg.Add(1)go func() {handleRequest(conn)wg.Done()}()}// 等待所有goroutine完成wg.Wait()}

在上面的代码中,我们首先创建了一个sync.WaitGroup来等待所有的goroutine完成。然后,我们启动一个并发服务器监听端口,并在接受到客户端连接时,为每个连接创建一个goroutine来处理请求。在处理请求的goroutine中,我们调用wg.Add(1)来表示一个新的goroutine开始,并在请求处理完成时调用wg.Done()来表示该goroutine结束。最后,我们在主函数中调用wg.Wait()来等待所有的goroutine完成。

请注意,上面的示例代码仅涵盖了基本的并发服务器实现,实际情况中可能需要更复杂的逻辑来处理并发请求。此外,还应该考虑资源管理、错误处理等方面的问题。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言