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

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

golang 如何判斷一個(gè) goroutine 函數(shù)執(zhí)行完成?

golang 如何判斷一個(gè) goroutine 函數(shù)執(zhí)行完成?

Go
慕桂英546537 2019-01-29 06:02:38
用 golang 的一個(gè)定時(shí)任務(wù)的第三方包,每隔 5s 執(zhí)行 foo 函數(shù),如下:func foo() {    onlineRooms := getOnlineRooms()     for _, room := range onlineRooms {         go doSomeThing(room)     } }這里取出所有在線的房間ID,然后啟用 goroutine 執(zhí)行 doSomeThing 函數(shù),這個(gè)函數(shù)里有計(jì)算,從 Redis,MySQL 讀寫數(shù)據(jù)等操作,如果第一輪調(diào)用沒執(zhí)行完,就開始第二輪調(diào)用,就會(huì)有計(jì)算錯(cuò)誤。那么我想每次定時(shí)任務(wù)來的時(shí)候,判斷這個(gè)函數(shù)有沒有執(zhí)行完,如果沒有執(zhí)行完就不重新調(diào)用,否則才調(diào)用,在 golang 中如何實(shí)現(xiàn)這個(gè)判斷呢?
查看完整描述

4 回答

?
千巷貓影

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

提供一個(gè)簡單便于理解方案:

func foo() {
    onlineRooms := getOnlineRooms()    for _, room := range onlineRooms {        go doSomeThing(room)
    }
}func doSomeThing(room Room) {    //把redis操作換成全局變量亦可
    if redis.Get(room){        return
    }
    redis.Set(room,true)    defer redis.Set(room,false)
}


查看完整回答
反對(duì) 回復(fù) 2019-03-16
?
楊__羊羊

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

package main


import (

    "fmt"

    "sync"

)


var wg *sync.WaitGroup


func main() {

    wg = &sync.WaitGroup{}

    for {

        wg.Wait()

        wg.Add(1)

        go test()

    }

    fmt.Println("vim-go")

}

func test() {

    //do something

    wg.Done()

}


查看完整回答
反對(duì) 回復(fù) 2019-03-16
?
四季花海

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

可以在room里加一個(gè)字段記錄操作是否完成

func foo() {    onlineRooms := getOnlineRooms()
    for _, room := range onlineRooms {
        if room.Done {
            go doSomeThing(room)
        }
    }
}


查看完整回答
反對(duì) 回復(fù) 2019-03-16
  • 4 回答
  • 0 關(guān)注
  • 1582 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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