
http.handlefunc 的 handler 执行并发性
使用 http.handlefunc 注册的 handler 在处理请求时的并发性一直是初学者关心的问题。本文将对其进行详细阐述。
问题:http.handlefunc 注册的 handler 是串行还是并发的?
答案:
http.handler 是并行执行的。
原理:
当网络服务器接收一个请求后,会按照以下顺序处理请求:
系统名称:魅力赢平台 系统版本:1.0.2 运行环境:asp+access/mssql 后台地址:您的网址/admin 默认帐号和密码分别是admin/admin888 基于赢CMS系统2013构建,为提升业务而生。比较适合网络公司以及开展网络业务的公司和个人 除了可以发布产品外系统还自带HaoErp,营销宝盒,建站宝盒,虚拟主机超市,云服务器超市,服务器超市,备案域名,超级转发,域名注册等赢
0
http.servemux.servehttp ↓ http.servemux.handler ↓ http.servemux.handler
其中,http.servemux.servehttp、http.servemux.handler、http.servemux.handler 的执行顺序是串行的。需要注意的是,尽管这些方法串行执行,但 http 服务器的请求处理是并发的。
当服务器调用 http.server.accept 方法接收请求时,会创建一个新的 goroutine 来处理这个请求。每个请求都会在单独的 goroutine 中处理,因此请求处理是并发的。
以下是相关的关键代码段:
// https://golang.org/src/net/http/server.go L2900
for {
rw, err := l.Accept()
if err != nil {
...
}
...
go c.serve(connCtx)
}在 c.serve 方法中,就开始调用 http.servemux.servehttp 方法并处理请求了。
因此,http.handlefunc 注册的 handler 虽然在其内部执行是串行的,但由于请求是在不同的 goroutine 中并行处理的,因此整体上是并发的。
以上就是http.HandleFunc注册的Handler是串行还是并发的?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号