Golang實現生產者和消費者

packagemain

import(

"fmt"

"sync"

)

//實現一個生產者和消費者

/*生產者產生數據添加到通道里面,消費者消費數據從通道里面

不帶緩存實現

*/

funcmain(){

ch:=make(chanint)

varwgsync.WaitGroup

wg.Add(2)

goproducers(&wg,ch)

goconsumer(&wg,ch)

wg.Wait()

}

//生產者

funcproducers(wg*sync.WaitGroup,chchanint){


fori:=0;i<10;i++{

fmt.Println("send:",i)

ch<-i

}

close(ch)

wg.Done()

}

//消費者

funcconsumer(wg*sync.WaitGroup,chchanint){

forv:=rangech{

fmt.Println("recv:",v)

}

wg.Done()

}

???$?

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

推薦閱讀更多精彩內容

  • 01.{ 換行: Opening Brace Can't Be Placed on a Separate Lin...
    碼農不器閱讀 2,423評論 0 14
  • fmt格式化字符串 格式:%[旗標][寬度][.精度][arg索引]動詞旗標有以下幾種:+: 對于數值類型總是輸出...
    皮皮v閱讀 1,123評論 0 3
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,924評論 18 139
  • 并發concurrency -很多人都是沖著Go 大肆宣揚的高并發而忍不住躍躍欲試,但其實從源碼的解析來看,gor...
    戰神湯姆閱讀 327評論 0 0
  • 公元15年9月6日,只身投奔長沙,冠冕堂皇地說是追逐夢想,其實也只有自己明白,這完全是一場不折不扣的出逃。高考失利...
    裘霖閱讀 400評論 0 4