Golang一直坚持到我按CTRL + C(Windows 10)

时间:2016-04-22 20:23:19

标签: go httphandler

我在Windows 10中有一个类似服务器的程序,其中主程序使用http.Handle(dst,handlerStruct)等待请求,并且每个查询执行相应的操作并返回结果或只打印一些内容屏幕。

它通常工作正常,但有时,有时,当我让程序“等待”请求进入很长时间(3分钟)然后我发送请求时,它只是“被卡住” “直到我按CTRL + C,然后它立即返回值。所以看起来程序运行良好,但是当我在没有请求的情况下长时间离开它时,返回的线程正在休息。

自从我开始开发程序以来,这种情况就发生了,而不仅仅是在使用goroutines的函数时。

对我而言,它似乎与Windows 10有关,而不是Golang本身,但它只是非常烦人,当然我不希望这发生在我的服务器上......

希望你能看到这里出了什么问题...

感谢。

修改

这是等待请求的主程序:

func main() {

    runtime.GOMAXPROCS(10000000)

    http.Handle("/sameDayCombinations", CBR.SameDayCombinationsHandler{})
    http.ListenAndServe(":8080", nil)
}

现在这是处理程序的ServeHTTP代码:

func (h SameDayCombinationsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {

    t1 := time.Now()

    q := common.DecodeRequest(r)
    json := common.EncodeAnswer((&h).RetrieveSpecificSolutions(q.Year, q.Month, q.Day, q.DepID, q.ArrID, q.Adults, q.Children, q.Infants), true)
    fmt.Fprintf(w, json)

    t2 := time.Now()
    fmt.Println(t2.Sub(t1))
}

EDIT2

这里我添加了一个程序执行的堆栈,出现这种奇怪的行为。所以,在做了CTRL + C后我得到了这个;看起来很正常。

http://pastebin.com/DduvtNZr

虽然,现在,通过实证演示,我确信它与控制台Prints(可能是大型打印件?)有关。这是一个很好的新东西,因为它只会在调试时发生,但仍然是一种奇怪的行为......

0 个答案:

没有答案