西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发其它知识 → Go语言并发之美:解释其中内核、外延

Go语言并发之美:解释其中内核、外延

相关软件相关文章发表评论 来源:微博时间:2012/11/28 13:47:54字体大小:A-A+

作者:颜开点击:71次评论:0次标签: Go语言

Flash版LOGO语言V9.8 免费简体中文版
  • 类型:编程工具大小:3.2M语言:中文 评分:6.3
  • 标签:
立即下载
3 页 多路复用

多路复用

多路复用是让一次处理多个队列的技术。Apache使用处理每个连接都需要一个进程,所以其并发性能不是很好。而Nginx使用多路复用的技术,让一 个进程处理多个连接,所以并发性能比较好。同样,在协程的场合,多路复用也是需要的,但又有所不同。多路复用可以将若干个相似的小服务整合成一个大服务。

那么让我们用多路复用技术做一个更高并发的随机数生成器吧。

// 函数rand_generator_3 ,返回通道(Channel)

funcrand_generator_3() chan int {

         // 创建两个随机数生成器服务

         rand_generator_1 := rand_generator_2()

         rand_generator_2 := rand_generator_2()

         //创建通道

         out := make(chan int)

         //创建协程

         go func() {

                   for {

                            //读取生成器1中的数据,整合

                            out <-<-rand_generator_1

                   }

         }()

         go func() {

                   for {

                            //读取生成器2中的数据,整合

                            out <-<-rand_generator_2

                   }

         }()

         return out

}

上面是使用了多路复用技术的高并发版的随机数生成器。通过整合两个随机数生成器,这个版本的能力是刚才的两倍。虽然协程可以大量创建,但是众多协程还是会 争抢输出的通道。Go语言提供了Select关键字来解决,各家也有各家窍门。加大输出通道的缓冲大小是个通用的解决方法。

多路复用技术可以用来整合多个通道。提升性能和操作的便捷。配合其他的模式使用有很大的威力。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据