第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個 go HTTP 服務器不在 Chrome 47 中為每個請求生成一個

為什么這個 go HTTP 服務器不在 Chrome 47 中為每個請求生成一個

Go
猛跑小豬 2021-11-29 16:50:34
以前的標題:如何為每個 HTTP 請求生成 goroutine?下面的代碼是一個簡單的 HTTP 服務器,它將路徑回顯給請求者。我用它來測試包的ListenAndServe方法是否net/http默認觸發(fā)一個 goroutine 來處理每個請求;我發(fā)現(xiàn)它沒有。如果我同時發(fā)出三個請求,第一個需要 10 秒返回,第二個需要 20(第一個返回后 10 秒),第三個需要 30 秒。package mainimport (  "fmt"  "net/http"  "time")func handler(w http.ResponseWriter, r *http.Request) {  time.Sleep(10000 * time.Millisecond)  fmt.Fprint(w, r.URL.Path)}func main() {  http.HandleFunc("/", handler)  http.ListenAndServe(":8080", nil)}基本上我想要的是主 goroutine 來監(jiān)聽 HTTP 連接,然后將請求的讀取和響應傳遞給另一個 goroutine 中產(chǎn)生的處理程序。有人可以為我指出實現(xiàn)這一目標的正確方向嗎?最好net/http在 go 中使用包。更新 12/21/15 08:46 AM MST我進行了與您使用 Web 瀏覽器 (chrome 47) 所做的完全相同的測試,在 localhost:8080 的根目錄下進行了五個請求,結(jié)果大致如下:1st: 10 seconds2nd: 20 seconds3rd: 30 seconds4th: 36 seconds     5th: 38 seconds因此,希望那些否則會否決我的問題的人會理解我的困惑以及我為什么做出這樣的假設。我不知道為什么我得到了我在第 4 次和第 5 次請求中所做的結(jié)果。我使用 curl 運行了相同的測試,結(jié)果與@tomasz 相同。我正在使用go1.2.1.
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

一切都很好,您的處理程序針對每個請求在單獨的例程中運行??匆幌耯ttp.Server.Serve方法的源代碼。接受循環(huán)的最后一行說:


go c.serve()

問題可能出在您的測試上。如果您通過瀏覽器中的多個選項卡檢查行為,則匹配 URL 的請求可能會排隊,而不是同時運行(即您的客戶端沒有使用“例程”,而不是服務器)。


嘗試兩種不同的瀏覽器,或者只使用命令行,比如curl并行測試請求。例如(在 bash 的幫助下):


$ for i in {1..5}; do time curl localhost:8080 &; done

# after ignoring some mess...

curl localhost:8080  0.00s user 0.00s system 0% cpu 10.013 total

curl localhost:8080  0.00s user 0.00s system 0% cpu 10.014 total

curl localhost:8080  0.00s user 0.00s system 0% cpu 10.012 total

curl localhost:8080  0.00s user 0.00s system 0% cpu 10.019 total

你的服務器就像一個魅力。


更新


我可以在 Chrome 47 上確認這種行為,但也注意到你可以打開多個標簽,比如http://localhost:8080/test1,http://localhost:8080/test2等等,你會得到預期的結(jié)果。這表明 Chrome 中確實有一些用于匹配 URL 的排隊機制。


查看完整回答
反對 回復 2021-11-29
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號