作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想知道代码 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/
在我的设置中,我试图有一个界面 Table继承自 Map (因为它主要用作 map 的包装器)。两个类继承自 Table - 本地和全局。全局的将有一个可变的映射,而本地的将有一个只有本地条目的映射。
Rust Nomicon 有 an entire section on variance除了关于 Box 的这一小节,我或多或少地理解了这一点和 Vec在 T 上(共同)变体. Box and Vec
我是一名优秀的程序员,十分优秀!