2022-05-19

// You can edit this code!
// Click here and start typing.
package main

import (
    "context"
    "fmt"
    "sync"
    "time"

    "golang.org/x/time/rate"
)

var printMux sync.Mutex

func print(i int, status string) {
    printMux.Lock()
    defer printMux.Unlock()
    fmt.Printf("%s %3d %s \n", time.Now(), i, status)
}

var mux sync.Mutex
var limiter *rate.Limiter

func checkAndRun(j int, wg *sync.WaitGroup) {
    defer wg.Done()
    if !mux.TryLock() {
        print(j, "return")
        return
    }
    print(j, "locked at")
    _ = limiter.Wait(context.Background())

    print(j, "after wait")
    mux.Unlock()
    print(j, "end+++++++++++++++++++++++++")
}
func main() {
    runTimes := 50
    limiter = rate.NewLimiter(1, 1)

    print(-1, "start")
    var wg sync.WaitGroup
    wg.Add(runTimes)
    for i := 0; i < runTimes; i++ {
        time.Sleep(100 * time.Millisecond)
        go checkAndRun(i, &wg)
    }
    wg.Wait()
    print(-1, "END")
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 看見燕子的停留,此刻的歇息不再理睬天空的高度。所有的喜悅只屬于我一個人。靈魂融入肉體,所有的笑容不再只是表情。所有...
    擱淺夕陽閱讀 134評論 0 0
  • 高一春節優秀作文800字【五篇】 導語:作文對于在校學生來說,是學習好語文的重要組成部分。我們每次考試得用到作文,...
    64cd40b8fe4b閱讀 122評論 0 2
  • 夢到我死了,與世界失去了聯系, 眼看著親人朋友我卻無法與之溝通, 看著我的身體化成灰,飄向大海 緊緊拽著S的手,唯...
    寸心_1a64閱讀 206評論 0 0
  • 人世間中的女性角色,最先引起我的關注的當屬周蓉了。最初開始我看到的周蓉,漂亮,大方,勤勞,陽光,活潑,似乎用來形容...
    湯湯TT閱讀 252評論 0 0
  • 生活似乎正在不斷向好的方向發展著,嗯,昨天的睡眠還可以,9點睡,3點醒,也睡了六個小時,但是之后就失眠就失眠了失眠...
    妖孽林洛洛閱讀 348評論 0 0