<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 使用場景 Ticker是周期性定時器,即周期性的觸發一個事件,通過Ticker本身提供的管道將事件傳遞出去 ### 簡單定時任務 有時,我們希望定時執行一個任務,這時就可以使用ticker來完成。 下面代碼演示,每隔1s記錄一次日志: ~~~go // TickerDemo 用于演示ticker基礎用法 func TickerDemo() { ticker := time.NewTicker(1 * time.Second) defer ticker.Stop() for range ticker.C { log.Println("Ticker tick.") } } ~~~ 上述代碼中,`for range ticker.C`會持續從管道中獲取事件,收到事件后打印一行日志,如果管道中沒有數據會阻塞等待事件,由于ticker會周期性的向管道中寫入事件,所以上述程序會周期性的打印日志 另一種實現方法: ~~~ func TestTicker2(t *testing.T) { channel := time.Tick(1 * time.Second) for{ select { case <- channel: t.Log("running:", time.Now()) } } } ~~~ ### 定時聚合任務 有時,我們希望把一些任務打包進行批量處理。比如,公交車發車場景: * 公交車每隔5分鐘發一班,不管是否已坐滿乘客; * 已坐滿乘客情況下,不足5分鐘也發車; 下面代碼演示公交車發車場景: ~~~go // TickerLaunch用于演示ticker聚合任務用法 func TickerLaunch() { ticker := time.NewTicker(5 * time.Minute) maxPassenger := 30 // 每車最大裝載人數 passengers := make([]string, 0, maxPassenger) for { passenger := GetNewPassenger() // 獲取一個新乘客 if passenger != "" { passengers = append(passengers, passenger) } else { time.Sleep(1 * time.Second) } select { case <- ticker.C: // 時間到,發車 Launch(passengers) passengers = []string{} default: if len(passengers) >= maxPassenger { // 時間沒到,車已座滿,發車 Launch(passengers) passengers = []string{} } } } } ~~~ 上面代碼中for循環負責接待乘客上車,并決定是否要發車。每當乘客上車,select語句會先判斷ticker.C中是否有數據,有數據則代表發車時間已到,如果沒有數據,則判斷車是否已坐滿,坐滿后仍然發車
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看