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

吉林省招标网官方网站网络营销技巧和营销方法

吉林省招标网官方网站,网络营销技巧和营销方法,莆田做网站公司电话,北京网站制作公司转型方向在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的case下,如果每一个输入串行处理的话,那么很…

在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的case下,如果每一个输入串行处理的话,那么很大一部分时间都会损耗在给外部发请求这个环节,因此我们会希望把这些请求放到各个goroutine里异步执行,等待批量执行完成之后再继续后面的逻辑。这个时候,我们就可以用到这个东西:sync.WaitGroup

WaitGroup提供了增减计数以及阻塞等待计数归零的线程安全接口。当主goroutine增加计数并等待的时候,子goroutine的逻辑中若引用了一个WaitGroup实例的话,也可以在结束(defer)的时候去减少计数,这样当主goroutine自旋等待计数归零时,等待的逻辑就返回了,就继续后面的内容。整体上,就达到了等待多路并行的异步任务这一效果。

一个典型的代码案例如下:

func TestWaitGroup(t *testing.T) {var wg sync.WaitGroupstartTime := time.Now()for i := 0; i < 5; i++ {n := i + 1sleepTime := time.Duration(n) * time.Secondwg.Add(1)go func() {defer wg.Done()t.Logf("task %d started", n)time.Sleep(sleepTime)t.Logf("task %d ended", n)}()}t.Logf("waiting for all tasks done...")wg.Wait()endTime := time.Now()t.Logf("all tasks done! elapsed time: %v", endTime.Sub(startTime))
}

整个逻辑很简单,我们起了5个任务,每个任务分别sleep上1到5秒。主goroutine此时在每个任务开始前,给WaitGroup实例wg加上1个计数,而在子goroutine里,defer地调用wg.Done减少计数。主goroutine起完任务之后,直接调用wg.Wait自选等待。这样5s后等所有任务Done,主goroutine就会接下来打印消耗时间的日志信息了。

打印的内容如下:

=== RUN   TestWaitGroupwg_test.go:26: waiting for all tasks done...wg_test.go:21: task 5 startedwg_test.go:21: task 1 startedwg_test.go:21: task 2 startedwg_test.go:21: task 3 startedwg_test.go:21: task 4 startedwg_test.go:23: task 1 endedwg_test.go:23: task 2 endedwg_test.go:23: task 3 endedwg_test.go:23: task 4 endedwg_test.go:23: task 5 endedwg_test.go:29: all tasks done! elapsed time: 5.0015089s
--- PASS: TestWaitGroup (5.00s)
PASS

WaitGroup的用法非常简单,但这里注意的是,实际遇到这种编程场景,一般会涉及到多任务运行结果收集还有程序异常处理相关的内容。因此,像recover或者select超时等一些子goroutine任务异常处理的逻辑,可能视实际情况都得配合加上。

http://www.zhongyajixie.com/news/39202.html

相关文章:

  • 网站推广的预算商务软文写作
  • 做游戏交易网站有哪些内容seo软文推广工具
  • 麓谷网站建设网站流量排名
  • 珠宝 网站模板关键词优化和seo
  • 有没有专门做家纺的网站seo推广系统
  • 国内地铁建设公司网站百度怎么找人工客服
  • 做环保的网站有哪些推广优化方案
  • 深圳市建设行业门户网站推广普通话宣传内容
  • 雅虎网站收录入口电商培训课程
  • 高端企业网站建设蓦然郑州网站建设6app推广有哪些渠道
  • 电子商务网站策划ppt百度搜索关键词怎么刷上去
  • 商城网站制作 价格百度平台营销宝典
  • 专业修真功法网站seo编辑招聘
  • 做网站让用seo刷新是哪个键百度登录个人中心
  • 西安微信小程序制作公司seo关键词快速排名
  • php网站实例教程网站里的友情链接
  • 做笑话网站赚钱seo指导
  • 深圳市工程交易中心做seo推广一年大概的费用
  • 东丽开发区做网站公司网站网址查询工具
  • 曰本真人性做爰网站宁德市房价
  • 宁波网站建设优化企业推荐今日新闻摘抄50字
  • 海口网站建设加王道下拉b2b免费发布信息网站
  • 微信系统平台开发优化营商环境心得体会
  • 网站建设维护职责北京seo招聘信息
  • 自己做网站图片存在哪里网络优化seo是什么工作
  • 自己做视频的网站吗爱链接购买链接
  • 河北提供网站建设公司哪家好跨境电商靠谱吗
  • 聊网站推广搜外滴滴友链
  • 公司网站建设及维护管理总结广州网络科技有限公司
  • 那些论坛网站做的比较好百度助手应用商店下载安装