1 回答
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
在寫(xiě)問(wèn)題時(shí),我記得 Golang 源代碼非常容易閱讀……并且認(rèn)為我應(yīng)該在看起來(lái)很傻之前先看一眼。我對(duì)我的發(fā)現(xiàn)很滿意 :)
如果報(bào)價(jià)閱讀器落后,它將開(kāi)始丟棄報(bào)價(jià),而不是阻塞寫(xiě)入通道(緩沖區(qū)只有 1)。這樣做的效果是在我們錯(cuò)過(guò)一個(gè)或多個(gè)滴答時(shí)立即讓事情回到“正軌”。
示例證明:
package main
import (
? ? "fmt"
? ? "time"
)
func main() {
? ? t := time.NewTicker(time.Millisecond * 50)
? ? for i := 0; i < 10; i++ {
? ? ? ? fmt.Printf("New invocation starting at %dms\n", time.Now().Round(time.Millisecond).Nanosecond()/int(time.Millisecond))
? ? ? ? if i%3 == 0 {
? ? ? ? ? ? fmt.Println("Executing for 25ms")
? ? ? ? ? ? time.Sleep(time.Millisecond * 25)
? ? ? ? } else {
? ? ? ? ? ? fmt.Println("Executing for 75ms")
? ? ? ? ? ? time.Sleep(time.Millisecond * 75)
? ? ? ? }
? ? ? ? fmt.Println("Waiting for ticker...")
? ? ? ? <-t.C
? ? }
? ? t.Stop()
}
輸出:
New invocation starting at 0ms
Executing for 25ms
Waiting for ticker...
New invocation starting at 50ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 125ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 200ms
Executing for 25ms
Waiting for ticker...
New invocation starting at 250ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 325ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 400ms
Executing for 25ms
Waiting for ticker...
New invocation starting at 450ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 525ms
Executing for 75ms
Waiting for ticker...
New invocation starting at 600ms
Executing for 25ms
Waiting for ticker...
- 1 回答
- 0 關(guān)注
- 213 瀏覽
添加回答
舉報(bào)
