当前位置: 首页 > news >正文

环球购物官方网站济南网站建设哪家便宜

环球购物官方网站,济南网站建设哪家便宜,汕头哪里做网站,网站虚拟空间前言 线程池大家都听过,其主要解决的是线程频繁创建销毁带来的性能影响,控制线程数量。 go协程理论上支持百万协程并发,协程创建调度的消耗极低,但毕竟也是消耗对吧。 而且协程池可以做一些额外的功能,比如限制并发&…

前言
线程池大家都听过,其主要解决的是线程频繁创建销毁带来的性能影响,控制线程数量。

go协程理论上支持百万协程并发,协程创建调度的消耗极低,但毕竟也是消耗对吧。

而且协程池可以做一些额外的功能,比如限制并发,定时等功能。

tunny中的协程池实现的几个功能,一个是限制并发,另一个是能根据协程上下文中断协程处理。同时能在协程处理过程中能做一些额外逻辑,算是装饰器吧。

简单示例
我们首先通过一个简单的例子来看这个协程池怎么使用,根据这个例子来一步步看源码。

    pool := tunny.NewFunc(10, func(in interface{}) interface{} {
        intVal := in.(int)
        fmt.Println(intVal)
        return intVal * 2
    })
    defer pool.Close()

    for i := 0; i < 10; i++ {
        ret := pool.Process(i)
        fmt.Println(ret)
    }

上例中,通过tunny.NewFunc 创建了一个容量为10的协程池,第二个参数定义了协程的处理方法,在下面的循环中,通过pool.Process(i) 调用了定义的方法,这个例子已经包含了协程池的创建和调度,来看看这两个是怎么实现的。

其他实践:

 

tunny vs ants

tunny设计的思路与ants有较大的区别:

tunny只支持同步的方式执行任务,虽然任务在另一个 goroutine 执行,但是提交任务的 goroutine 必须等待结果返回或超时。不能做其他事情。正是由于这一点,导致tunny的设计稍微一点复杂,而且为了支持超时和取消,设计了多个通道用于和执行任务的 goroutine 通信。一次任务执行的过程涉及多次通信,性能是有损失的。从另一方面说,同步的编程方式更符合人类的直觉。

ants完全是异步的任务执行流程,相比tunny性能是稍高一些的。但是也因为它的异步特性,导致没有任务超时、取消这些机制。而且如果需要收集结果,必须要自己编写额外的代码。

总结

本文介绍了另一个 goroutine 池的实现tunny。它以同步的方式来处理任务,编写代码更加直观,对任务的执行流程有更强的控制,如超时、取消等。当然实现也复杂一些。

 

http://www.khdw.cn/news/36936.html

相关文章:

  • 凡客建站官网登录入口网站建设的流程及步骤
  • 动态网页设计与网站建设网站流量查询站长之家
  • 桂林象鼻山的由来seo论坛站长交流
  • web前端网站建设seo培训赚钱
  • 公司网站设计规范最新的国际新闻
  • 门户网站解决方案南宁seo渠道哪家好
  • wordpress 文档管理上海关键词seo
  • 卖域名的公司 骗做网站百度关键词排名神器
  • 网站建设行业的趋势希爱力的功效及副作用
  • thinkphp集成wordpressseo优化教程自学
  • 杭州自助建站模板下载2022新闻大事件摘抄
  • 网站建设在微信里打广告内容广告推广软文案例
  • 合肥网站建设王正刚东莞seo管理
  • 做pc端网站报价百度一下你就知道主页
  • 新手容易上手的cms做企业网站软文写作什么意思
  • 重庆平台网站建设多少钱国家培训网官网
  • 站优化阿里云万网域名查询
  • 做网站设计需要学什么产品故事软文案例
  • 用自己电脑做服务器 网站网络营销主要学什么
  • 2017做网站挣钱吗百度网盘搜索引擎入口官网
  • 湛江网站建设运营方案怎么做网络营销平台
  • 做网站要多少钱一个兰州模板网站seo价格
  • 北京seo薪资青岛seo计费
  • 国内自助建站平台有哪些seo技术顾问阿亮
  • 网站域名备案与不备案的区别发稿吧
  • 企业网站建设网站专业服务杭州今天查出多少阳性
  • 网站域名空间怎么提交搜索引擎入口yandex
  • 一台服务器做两个网站怎么让关键词快速排名首页
  • 免费vip网站推广专业地推团队电话
  • 手机免费制作自己的网站谷歌paypal官网登录入口