go的数据类型-其他数据类型-channel(二)
来源:腾讯云 时间:2023-04-23 01:08:57
(资料图)
Channel的使用示例
以下是一个使用Channel的示例程序,该程序创建了两个Goroutine,并使用Channel在它们之间进行通信和同步。
package mainimport ("fmt""time")func worker(id int, jobs <-chan int, results chan<- int) {for j := range jobs {fmt.Printf("worker %d started job %d\n", id, j)time.Sleep(time.Second)fmt.Printf("worker %d finished job %d\n", id, j)results <- j * 2}}func main() {jobs := make(chan int, 100)results := make(chan int, 100)for w := 1; w <= 3; w++ {go worker(w, jobs, results)}for j := 1; j <= 9; j++ {jobs <- j}close(jobs)for a := 1; a <= 9; a++ {<-results}}
在这个示例程序中,我们定义了一个名为worker
的函数,它模拟了一个工作任务。这个函数接收一个jobs
的单向Channel用于接收工作任务,以及一个results
的单向Channel用于发送工作结果。当函数接收到一个工作任务时,它会等待一秒钟,然后将工作结果发送到results
的Channel中。
在main
函数中,我们创建了两个Channel:一个jobs
的Channel用于发送工作任务,一个results
的Channel用于接收工作结果。然后,我们启动了三个Goroutine,并将它们分别分配给worker
函数。接下来,我们向jobs
的Channel中发送了9个工作任务,并关闭了这个Channel。最后,我们从results
的Channel中接收了9个工作结果。
在这个示例程序中,我们使用Channel实现了工作任务的分配和工作结果的收集。通过使用Channel,我们可以轻松地实现Goroutine之间的通信和同步,从而使程序变得简单和高效。
标签:
- go的数据类型-其他数据类型-channel(二)
- 古筝演奏家赵洁楠用情境音画《如梦令》带观众“入梦”
- Alphabet首席执行官2022年总薪酬2.26亿美元,含巨额股票奖励
- 吃苹果喝酸奶会减肥吗 苹果加酸奶能减肥吗
- 山东省首座五万座足球场青岛青春足球场将迎来中超首秀
- 2023投资到底投什么最赚钱 这4个行业值得你仔细了解
- 竹山县文峰乡两万余棵楸树繁花让人醉
- 全球即时:ipad无法连接到app store
- 外交部发言人:敦促美国等发达国家审慎评估自身经济金融政策外溢影响
- 梅河口邀您“五一”来畅游
- 网上怎么赚钱啊17n_网上怎么赚钱靠谱_世界关注
- 今天北方下雪,广西过夏!未来一周有两次明显降雨+强对流天气过程
- 不再是最终受益人是什么意思_最终受益人是什么意思-天天快资讯
- 当缤纷地球遇见绝美中国色-全球新消息
- 库里季后赛得分达到3664分 超越诺维茨基排名历史第16位!_新资讯
- 杜特尔特质问菲律宾总统马科斯,你能挡得住中国的导弹吗?-天天微动态
- 如何看待捷豹路虎“新现代豪华主义”?
- 迎接五一“大烤”,淄博准备好了吗?-环球最新
- 环球要闻:1月18日出售的这座美丽的茅草屋将是圣诞电影的完美地点
- 工业级片碱商品报价动态(2023-04-22)_世界播资讯
- Consul 的特点和优势 全球快看
- 环球新资讯:小鲨易贷没放款法院会硬式执行吗
- 当前速递!一次「找回」TraceId的问题分析与过程思考
- 如何拆解 Hoover FloorMate_女孩子成年礼送什么礼物传统
- 【荧光探针专题】过氧化亚硝酸盐(ONOO-)荧光探针研究进展
- 每日看点!五一云南旅游预订暴涨400%!泼水节带动旅游热,游客:泼起水来都看不到人
- 鱼露的正确用法_鱼露的用法
- 每日报道:因毛集实验区惠民路段封闭施工 淮南39路公交临时改线
- 3.5打一成语 35打一成语|全球最资讯
- 金融力量助推西部陆海新通道“加速跑”-速看料
x
广告
x
广告