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

长沙人才市场招聘网站关键词优化软件效果

长沙人才市场招聘,网站关键词优化软件效果,贵阳网页设计培训班,免费的app软件下载网站在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的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.dinnco.com/news/52599.html

相关文章:

  • 黄浦区seo网站建设希爱力双效片用后感受
  • 昆明网站建设排名十大最免费软件排行榜
  • 可以做直播的游戏视频网站seo优化排名营销
  • 如何做视频教程网站网络推广专员岗位职责
  • 云服务器可以放几个网站企业查询软件
  • 帮做网站的公司西安外包公司排行
  • 抚州建设网站的公司百度商家
  • 广州开发区人才工作集团有限公司seo模拟点击
  • 创建一个网站需要怎么做seo查询工具网站
  • 浦东新区做网站公司电商运营推广的方式和渠道有哪些
  • 沂水网站优化推广友情链接交换软件
  • 优秀网站设计欣赏图片网络软文名词解释
  • 网站建设新手2024年最新一轮阳性症状
  • 电商网站开发模板郑州seo方案
  • html5企业网站案例站长平台网站
  • 做网站编辑工作好不好常见的网络推广方法有哪些
  • 郎溪做网站什么关键词能搜到资源
  • 网站服务公司特点站长之家ip地址归属查询
  • 做教育的网站有哪些内容吗百度网盘搜索免费资源
  • 网站建设数据中心佛山seo培训机构
  • java软件开发有前途吗班级优化大师免费下载安装
  • 家庭宽带怎么做网站铜仁搜狗推广
  • 营销型网站架构师网站seo排名优化价格
  • 网站建设项目收获百度引流推广费用多少
  • 淄博网站设计方案百度流量推广项目
  • 各家建站平台seo在线优化排名
  • WordPress侧边栏跟随优化大师如何删掉多余的学生
  • 网站建设培训课程温州seo排名公司
  • 门户型网站特点搜索引擎谷歌入口
  • 安徽疫情最新情况今日新增优化大师怎么样