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

溫馨提示×

溫馨提示×

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

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

select、定時器

發布時間:2020-07-02 13:23:42 來源:網絡 閱讀:316 作者:梁十八 欄目:編程語言

應用場景舉例:
一個任務管道滿了,再往里面塞就塞不進去了,瀏覽器刷不出來了。用戶即便關了瀏覽器可能依然在阻塞......

package main

import "fmt"
import "time"

func main() {
   var ch chan int
   ch = make(chan int, 10)
   ch3 := make(chan int, 10)
   go func() {
      var i int
      for {
         ch <- i
         time.Sleep(time.Second)
         ch3 <- i * i
         time.Sleep(time.Second)
         i++
      }
   }()
   for {
      select { //這個case如果不能從ch中獲取數據,則會立即走下一個
      case v := <-ch:
         fmt.Println(v) //這個case如果不能從ch3中獲取數據,則會立即走下一個
      case v := <-ch3:
         fmt.Println(v) //然而這樣寫可能有內存泄漏!
      case <-time.After(time.Second):
         fmt.Println("get data timeout")
         time.Sleep(time.Second)
      default:
         fmt.Println("===================")
         time.Sleep(time.Second)
      }
   }
}

上面的寫法可能會有內存泄漏!

package main

import (
   "fmt"
   "runtime"
   "time"
)

func main() {
   num := runtime.NumCPU()
   runtime.GOMAXPROCS(num - 1)
   for i := 0; i < 16; i++ {
      go func() {
         for { 
            //每秒執行一次
            t := time.NewTicker(time.Second)
            select {
            case <-t.C:
               fmt.Println("timeout")
            } //一定要關閉
            t.Stop()
         }
      }()
   }

   time.Sleep(time.Second * 100)
}

go官方文檔的建議:
select、定時器

select、定時器

select、定時器

select、定時器

select、定時器

select、定時器

select、定時器

select、定時器

select、定時器

select、定時器





向AI問一下細節

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

AI

霍州市| 萝北县| 抚顺县| 鞍山市| 平原县| 南漳县| 三台县| 田林县| 周口市| 濉溪县| 肇源县| 马关县| 新乡县| 衡水市| 申扎县| 仙游县| 临漳县| 荆门市| 曲周县| 繁昌县| 吉木萨尔县| 宁武县| 扎赉特旗| 攀枝花市| 馆陶县| 温州市| 双城市| 莱州市| 阳谷县| 武冈市| 始兴县| 化州市| 嵊州市| 蛟河市| 丹阳市| 广饶县| 溧水县| 盐山县| 故城县| 大邑县| 奉化市|