几个常见的并发模型 |
您所在的位置:网站首页 › 简述生产者消费者模型的优点 › 几个常见的并发模型 |
前面已经讲过很多Golang系列知识,包括并发,锁等内容,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/category/1275863.html, 接下来讲几个golang常见的并发模型,今天先说说生产者消费者模型。 生产者消费者模型生产者:发送数据端 消费者:接收数据端 缓冲区: 1. 解耦(降低生产者和消费者之间耦合度) 2. 并发(生产者消费者数量不对等时,能保持正常通信) 3. 缓存(生产者和消费者 数据处理速度不一致时,暂存数据) 如何实现?生产者消费者模型是非常常见的并发模型,而且golang提供了chan类型,可以很方便的实现。 根据 golang的官方文档,使用chan就可以实现生产者和消费者之间的数据和状态同步。 通过chan在生产者和消费者之间传递数据(ch)和同步状态(done);chan作为参数传递时是引用传递,不需要使用指针;chan是协程安全的,多个goroutine之间不需要锁;chan的close事件可以被recv获取,close事件一定在正常数据读完之后,机制类似于read到EOF;示例代码:package main import "fmt" func Producer(ch chan int) { for i := 1; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |