gpt4 book ai didi

带有 http.HandleFunc 的协程

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:38 26 4
gpt4 key购买 nike

我想知道代码 1 是否管理内部 goutines 并且可以在请求增加(几十个)时使用一个 CPU 的所有内核,或者如果每个处理程序我必须放置关键字 go 来指示函数处理程序将由一个 gorotine 管理,如代码 2 中所示,因此可以使用服务器的所有核心。

代码 1

package main

import (
"fmt"
"net/http"
)

func HandlerOne(w http.ResponseWriter, req *http.Request) {
fmt.Println("message one")
}

func HandlerTwo(w http.ResponseWriter, req *http.Request) {
fmt.Println("message two")
}
func main() {

http.HandleFunc("/R1", HandlerOne)
http.HandleFunc("/R2", HandlerTwo)

err := http.ListenAndServe(":9998", nil)

if err != nil {
fmt.Printf("Server failed: ", err.Error())
}
}

代码 2

    package main

import (
"fmt"
"net/http"
)

func HandlerOne(w http.ResponseWriter, req *http.Request) {
fmt.Println("message one")
}

func HandlerTwo(w http.ResponseWriter, req *http.Request) {
fmt.Println("message two")
}
func main() {

go http.HandleFunc("/R1", HandlerOne)
go http.HandleFunc("/R2", HandlerTwo)

err := http.ListenAndServe(":9998", nil)

if err != nil {
fmt.Printf("Server failed: ", err.Error())
}
}

注意:两者都可以正常运行,您可以使用

对其进行测试
curl -l http://localhost:9998/R1

curl -l http://localhost:9998/R2

最佳答案

版本 2 是错误的。 Package http 为您处理所有这些事情。只需确保您使用适当的 GOMAXPROCS 调用您的程序,例如像 GOMAXPROCS=4 ./main

关于带有 http.HandleFunc 的协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22991359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com