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

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

如何正確執(zhí)行多個(gè)并發(fā)請求?

如何正確執(zhí)行多個(gè)并發(fā)請求?

Go
忽然笑 2021-11-22 18:35:24
我正在嘗試向數(shù)據(jù)庫發(fā)出多個(gè)請求,我發(fā)現(xiàn)同步執(zhí)行這些請求非常慢,并且在等待每個(gè)請求完成時(shí)響應(yīng)時(shí)間呈指數(shù)增長,這就是我到目前為止所擁有的:var wg sync.WaitGroupdbUsername := make(chan string, 1)dbEmail := make(chan string, 1)wg.Add(2)go func(username chan string, waiter sync.WaitGroup) {    defer waiter.Done()    err = db.QueryRow("SELECT username FROM user WHERE username = ?", vals.Get("username")).Scan(&result)    if err != nil {        log.Println(err)    }}(dbUsername, wg)go func(email chan string, waiter sync.WaitGroup) {    defer waiter.Done()    err = db.QueryRow("SELECT email FROM user WHERE email = ?", vals.Get("email")).Scan(&result)    if err != nil {        log.Println(err)    }}(dbEmail, wg)wg.Wait()if <-dbUsername != "" {    formErrors = append(formErrors, "Username has already been taken.")}if <-dbEmail != "" {    formErrors = append(formErrors, "Email has already been taken.")}但它似乎無法正常工作,我已經(jīng)按照WaitGroup示例進(jìn)行了操作,但它似乎仍然存在wg.Wait(),我不確定為什么。有沒有更漂亮的方法來做到這一點(diǎn),還是我模擬的正常?還有一個(gè)小問題:是否可以聲明一個(gè)緩沖通道,var例如var blah chan string 1
查看完整描述

1 回答

?
紅糖糍粑

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

您正在將您的副本傳遞WaitGroup給您的兩個(gè)函數(shù),

而是傳入一個(gè)指針, waiter *sync.WaitGroup,因此您在 WaitGroup 上等待的代碼和 goroutine 都在同一個(gè) WaitGroup 上運(yùn)行。

這也在文檔中注明:

不應(yīng)復(fù)制包含在此包中定義的類型的值。

但是,在您的情況下,您的 goroutine 函數(shù)可以訪問在外部作用域中聲明的變量,因此您根本不需要傳入任何參數(shù)。您可能也不需要 WaitGroup,因?yàn)榻邮?code><-dbUsername 并且<-dbEmail無論如何都會(huì)等到 goroutine 完成 - 只要您讓您的兩個(gè) goroutine 在各自的通道上發(fā)送一個(gè)值。而且您也不需要這里的緩沖通道。

至于這個(gè):

是否可以使用 var 聲明緩沖通道,例如 var blah chan string 1

是的,請記住需要使用創(chuàng)建頻道 make()

var blah chan string 
blah = make(chan string, 1)

或者 var blah chan string = make(chan string, 1)


查看完整回答
反對 回復(fù) 2021-11-22
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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