日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編子墨介紹:在Go語言中,select語句是一種非常重要的控制流程語句,它用于同時監(jiān)聽多個通道的操作,實現(xiàn)并發(fā)控制。為什么需要等待select呢?這是因為在并發(fā)編程中,我們通常需要同時處理多個通道的數(shù)據(jù)或事件,而select語句可以幫助我們監(jiān)聽多個通道,一旦其中任意一個通道可操作,就會執(zhí)行對應(yīng)的操作,從而實現(xiàn)并發(fā)處理。通過使用select,我們可以有效地避免阻塞,提高程序的響應(yīng)性和并發(fā)能力。

問題內(nèi)容

我剛剛學(xué)習(xí)了上下文取消。
這是我的代碼。

package main

import (
  "fmt"
  "context"
)

func main() {
  ctx := context.Background()

  do(ctx)
}

func do(ctx context.Context) {
  ctx, ctxCancel := context.WithCancel(ctx)

  resultCh := make(chan string)

  go terminate(ctx, resultCh)

  resultCh <- "value1"
  resultCh <- "value2"

  fmt.Println("pre cancel")

  ctxCancel()

  fmt.Println("post cancel")
}

func terminate(ctx context.Context, ch <-chan string) {
  for {
    select {
    case <-ctx.Done():
      fmt.Println("terminate")
      return
    case result := <-ch:
      fmt.Println(result)
    }
  }
}

登錄后復(fù)制

想問

為什么會發(fā)生這種情況。
我需要什么知識?

我期待輸出。

但得到的實際輸出不包含“終止”。

value1
value2
pre cancel
terminate
post cancel

登錄后復(fù)制

固定代碼

我在取消功能下添加了 time.Sleep 。
那么輸出就是我的預(yù)期。

ctxCancel()
time.Sleep(100 * time.Millisecond) // add

登錄后復(fù)制

解決方法

據(jù)我了解,使用 select 背后的核心思想是等待至少一種情況“準(zhǔn)備好”。我在下面提供了一個示例,可能會有所幫助。這里 select 用于等待從通道 ch 接收值或發(fā)生 1 秒超時。

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan int)

    go func() {
        // Simulate some time-consuming operation
        time.Sleep(2 * time.Second)
        ch <- 42
    }()

    select {
    case result := <-ch:
        fmt.Println("Received result:", result)
    case <-time.After(1 * time.Second):
        fmt.Println("Timeout reached")
    }
}

登錄后復(fù)制

分享到:
標(biāo)簽:Go語言
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定