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

o2o网站建设哪家好网络推广外包哪家好

o2o网站建设哪家好,网络推广外包哪家好,徐州关键字优化咨询,一个女的让我和她做优惠网站在后端开发当中,经常会遇到这样的场景:请求给了批量的输入,对于每一个输入,我们都要给外部发请求等待返回,然后才能继续其它自己的业务逻辑。在这样的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.hkea.cn/news/859752/

相关文章:

  • 做网站需要准备的工具网络营销方案模板
  • 科技未来网站建设百度推广开户公司
  • 十度网站建设保定网站推广公司
  • php可以做视频网站有哪些软文推广渠道主要有
  • 成都网站建设桔子科技淘宝付费推广有几种方式
  • 福田的网站建设公司网络营销成功案例ppt免费
  • 网站建设英文专业术语百度推广网址
  • 做网站之前需要准备什么企业网络营销策划案
  • dreamweaver动态网站开发与设计教程内容怎么在百度上面打广告
  • 济南网站搜索优化深圳网络推广招聘
  • 网站 色彩武汉it培训机构排名前十
  • 怎么做资源网站网络培训中心
  • 服装品牌网站建设营销网站建设选择原则
  • 乌鲁木齐新市网站建设有哪些网络营销公司
  • 网站的后台怎么做企业网络规划设计方案
  • 做网站文字字号大小企业网站设计要求
  • ae有么有做gif的网站品牌推广方案范文
  • apicloud官网下载seo关键词优化排名公司
  • 上海网站制作福州百度关键字优化精灵
  • 做uml图网站百度账号快速注册入口
  • 广西梧州南京 seo 价格
  • 网站警察备案seo关键词优化平台
  • 网站开发设计实训 报告惠州网站建设
  • 网站开发的原理山西免费网站关键词优化排名
  • 石家庄网站建设全包免费推广网站2024
  • 阿里云网站备案时间无锡seo网站管理
  • 景点介绍网站模板重庆百度关键词推广
  • 做亚马逊网站费用吗曲靖新闻今日头条
  • bing 网站管理员2023今日新闻头条
  • 深圳市做网站前十强百度一下搜索网页