填充缓冲的陈,直到满或持续时间

时间:2015-09-19 08:47:50

标签: go

我有一个缓存的chan string,我一直用随机字符串填充它,直到一段时间。持续时间过去或直到它变满。

我的问题是,我应该使用自动收报机,因为它是一次性任务还是有更方便的方式?

这是我目前的做法

package main

import (
    "fmt"
    "time"
)

func main() {
    res := fillChan(time.Duration(1*time.Nanosecond), 100000)
    fmt.Println(len(res))
}

func fillChan(maxDuration time.Duration, chanSize int) chan string {
    c := make(chan string, chanSize)

    ticker := time.NewTicker(maxDuration)

    for {
        select {
        case <-ticker.C:
            ticker.Stop()
            return c
        case c <- "Random message":
        default:
            return c
        }
    }

}

1 个答案:

答案 0 :(得分:1)

我不是Go的专家(事实上,我从未使用过它),但文档建议TimerAfter用于单个事件。

select {
case <-time.After(1*time.Nanosecond):
    return c
case c <- "Random message":
default:
    return c
}