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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

同步?;コ怏w或互斥體。句柄不工作

同步?;コ怏w或互斥體。句柄不工作

Go
泛舟湖上清波郎朗 2022-09-26 15:31:11
我正在使用教科書(shū):“Go編程語(yǔ)言”,其中他們展示了如何使用Go制作Web服務(wù)器。按照他們給出的代碼,我做了一個(gè)Web服務(wù)器:package mainimport (    "fmt"    "log"    "net/http"    "sync")var mu sync.Mutexvar count intfunc main() {    http.HandleFunc("/", handler)    http.HandleFunc("/count", counter)    log.Fatal(http.ListenAndServe("localhost:8080", nil))}func handler(w http.ResponseWriter, r *http.Request) {    mu.Lock()    count++    mu.Unlock()    fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)}func counter(w http.ResponseWriter, r *http.Request) {    mu.Lock()    fmt.Fprintf(w, "Count %d\n", count)    mu.Unlock()}之后,我想用 goroutines 測(cè)試我的知識(shí),所以我制作了一個(gè)程序,將服務(wù)器端點(diǎn)調(diào)用:“/rest”1000 次。然后我調(diào)用端點(diǎn):“/count”,它假設(shè)返回調(diào)用前一個(gè)端點(diǎn)的次數(shù)。send.gopackage mainimport (    "fmt"    "net/http"    "os"    "strconv"    "io/ioutil")func main() {    times, _ := strconv.Atoi(os.Args[1])        for i := 0; i < times; i++ {        go call()    }    response, err := http.Get("http://localhost:8080/count")    if err != nil {        fmt.Println("ERROR ", err)    }        text, _ := ioutil.ReadAll(response.Body)    fmt.Println(string(text))    response.Body.Close()}func call() {    _, _= http.Get("http://localhost:8080/rest")}問(wèn)題是這樣的:/count 終結(jié)點(diǎn)返回一個(gè)小于 1000 的數(shù)字。請(qǐng)告訴我我做錯(cuò)了什么,或者如果我對(duì)同步方式有誤解?;コ怏w或互斥體。句柄()工作。
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

互斥體僅確保沒(méi)有兩個(gè)戈魯廷同時(shí)寫(xiě)入/讀取,但它不控制這些戈魯廷的執(zhí)行順序。count

這意味著您的代碼中沒(méi)有任何內(nèi)容可以確保在執(zhí)行之前完成所有操作。go call()http.Get(".../count")

如果只想在完成所有操作執(zhí)行,則可以使用同步來(lái)執(zhí)行此操作。等待組。http.Get(".../count")go call()


查看完整回答
反對(duì) 回復(fù) 2022-09-26
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

sync.Mutex并且正在按預(yù)期工作,但每個(gè)處理程序都在自己的 go-例程中運(yùn)行。不能保證任何調(diào)用都在調(diào)用之前運(yùn)行,無(wú)論它們發(fā)布到服務(wù)器的順序如何。http.HandleFunchandlercount

在測(cè)試程序中,您可以刪除前面的關(guān)鍵字,該關(guān)鍵字將確保所有請(qǐng)求都串聯(lián)運(yùn)行,因?yàn)榈却?wù)器返回?;蛘撸梢允褂米⑨屩薪ㄗh的方式,這將允許并行處理請(qǐng)求,但在發(fā)送計(jì)數(shù)請(qǐng)求之前等待它們?nèi)客瓿伞?code>gocall()Get()WaitGroup


查看完整回答
反對(duì) 回復(fù) 2022-09-26
  • 2 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)