緩沖通道與非緩沖通道

非緩沖通道

1.先接收后發送,沒有接收之前發送不能完成,會被阻塞住。
2.由于第1點,說明非緩沖通道是同步的。
3.由于第1點,說明非緩沖通道并不能使得程序性能提高。

  1. 發送端每次都需要確保元素值已被接收的情況下,使用非緩沖通道是合適的。

緩沖通道

  1. 緩沖通道就是隊列。
  2. 使用緩沖通道,能夠進行異步處理,提高程序性能。

goto的使用

goto用來打破for死循環

func main(){
    unbufchan := make(chan int)
    sign := make(chan byte,2)
    go func(){
        for i := 0;i<10;i++{
            select {
            case unbufchan <- i:
                case unbufchan <- i+10:
            default:
                fmt.Println("default")
            }
            time.Sleep(time.Second)
        }
        close(unbufchan)
        fmt.Println("the channel is closed")
        sign <- 0
    }()

    go func(){
        loop:
            for {
                select {
                case e,ok := <- unbufchan:
                    if !ok{
                        fmt.Println("closed channel")
                        break loop
                    }
                    fmt.Println("e=>",e)
                    time.Sleep(2*time.Second)
                }
            }
            sign <- 1
    }()
    <- sign
    <- sign
}

定時器timer.Reset的使用

if timer == nil{
  timer = time.NewTimer(time.Millisecond)
} else{
  timer.Reset(time.Millisecond)
}

拼湊時間

//3小時20分鐘
3*time.Hour+20*time.Minute
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,928評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,301評論 25 708
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,779評論 0 11
  • #每日教練問題# 當你孤單你會想起誰? 好像每個人都會經歷孤獨的時刻。 望不盡的海市蜃樓 迎面而來風的呼嘯 不可逆...
    雨婷兒呀閱讀 243評論 0 0
  • 目錄 輪回百世,緣起緣滅。你,相信緣分嗎? 他是王府中一位被囚公子――沐白。 她是修煉千年化為人形的錦鯉――緋雪。...
    遲安北閱讀 759評論 0 4