91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中select實現非阻塞及超時控制

發布時間:2020-08-05 20:22:06 來源:網絡 閱讀:2762 作者:PowerMichael 欄目:編程語言
// select.go
package main

import (
    "fmt"
    "time"

    //"time"
)

func main() {
    //聲明一個channel
    ch := make(chan int)

    //聲明一個匿名函數,傳入一個參數整型channel類型ch
    go func(ch chan int) {
        ch <- 1
        //往channel寫入一個數據,此時阻塞
    }(ch)

    //由于goroutine執行太快,先讓它sleep 1秒
    time.Sleep(time.Second)

    select {
    //讀取ch,解除阻塞
    case <-ch:
        fmt.Print("come to read ch!")
    default:
        fmt.Print("come to default!")
    }
}

// select.go
//整型channel類型ch一直處于讀取狀態,所以處于阻塞,使用select實現超時控制
package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan int)
    //buffer channel,1個元素前非阻塞
    timeout := make(chan int, 1)

    go func() {
        time.Sleep(time.Second)
        //寫channel
        timeout <- 1
    }()

    select {
    //讀channel
    case <-ch:
        fmt.Print("come to read ch!")
        //沒有讀到channel,實現超時控制
    case <-timeout:
        fmt.Print("come to timeout!")
    }

    fmt.Print("end of code!")
}

// select.go
//使用time.After實現超時控制
package main

import (
    "fmt"
    "time"
)

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

    select {
    case <-ch:
        fmt.Print("come to read ch!")
    case <-time.After(time.Second):
        fmt.Print("come to timeout!")
    }

    fmt.Print("end of code!")
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东阿县| 开鲁县| 潮州市| 宜君县| 丰镇市| 邛崃市| 桐城市| 额尔古纳市| 吉首市| 融水| 溆浦县| 西乌珠穆沁旗| 如东县| 石门县| 定州市| 响水县| 潼关县| 北京市| 晋州市| 东乡县| 邵阳市| 江达县| 大姚县| 玛多县| 淳化县| 渭源县| 工布江达县| 伊宁市| 盐津县| 信宜市| 社旗县| 蒙阴县| 明水县| 江华| 博白县| 逊克县| 务川| 卫辉市| 隆尧县| 云安县| 大厂|