首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我在golang的Why服务器不能处理并发请求?

为什么我在golang的Why服务器不能处理并发请求?
EN

Stack Overflow用户
提问于 2012-05-23 21:23:36
回答 2查看 30.5K关注 0票数 65

这个简单的HTTP服务器包含一个对time.Sleep()的调用,它使每个请求花费5秒的时间。当我尝试在浏览器中快速加载多个选项卡时,很明显每个请求都是按顺序排队和处理的。如何让它处理并发请求?

代码语言:javascript
复制
package main

import (
   "fmt"
   "net/http"
   "time"
)

func serve(w http.ResponseWriter, r *http.Request) {
   fmt.Fprintln(w, "Hello, world.")
   time.Sleep(5 * time.Second)
}

func main() {
   http.HandleFunc("/", serve)
   http.ListenAndServe(":1234", nil) 
}

实际上,我是在写完问题后才找到这个问题的答案的,而且这个问题非常微妙。我还是把它贴出来了,因为我在谷歌上找不到答案。你能看到我做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-24 17:05:45

在Server.go中,当连接被接受时,在服务函数中产生go例程。以下是代码片段:-

代码语言:javascript
复制
// Serve accepts incoming connections on the Listener l, creating a 
// new service goroutine for each.  The service goroutines read requests and
// then call srv.Handler to reply to them.
func (srv *Server) Serve(l net.Listener) error {
        for {
            rw, e := l.Accept()
               if e != nil {
......
            c, err := srv.newConn(rw)
            if err != nil {
                continue
            }
            c.setState(c.rwc, StateNew) // before Serve can return
            go c.serve()
        }
}
票数 13
EN

Stack Overflow用户

发布于 2016-06-16 06:22:02

如果使用xhr请求,请确保xhr实例是本地变量。

例如,xhr = new XMLHttpRequest()是一个全局变量。当您使用相同的xhr变量进行并行请求时,您只会收到一个结果。因此,您必须像这样在本地声明xhr var xhr = new XMLHttpRequest()

票数 -6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10720867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档