我在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后我得到了这个;看起来很正常。
虽然,现在,通过实证演示,我确信它与控制台Prints(可能是大型打印件?)有关。这是一个很好的新东西,因为它只会在调试时发生,但仍然是一种奇怪的行为......