当前位置: 首页 > 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.yayakq.cn/news/467753/

相关文章:

  • 宁波慈溪网站建设个人怎么注册域名
  • 安徽省建设工程协会网站东莞网站建设 熊掌号
  • 做3ds磁铁卡网站O2O网站制作需要多少钱
  • 网站怎么对接微信支付宝如何用asp做网站
  • 东莞网站建设品牌公司微信公众号怎么创建账号
  • 网站开发就业前景分析顺徳网站建设公司有哪些
  • 大连百度关键词排名宁波做网站优化公司
  • 公司网站搜索引擎排名wordpress 图片 大小
  • 什么是小手机型网站百度短网址生成器
  • 广州市公司网站建设公司广东建筑人才网
  • 西安品牌网站建设服务商互联网推广手段
  • 赣州网站建设如何徐州专业网站建设
  • 在pc端预览手机网站安徽平台网站建设费用
  • 云南网站建设崇左深圳公司注册要求
  • 西安电商网站WordPress 微盘
  • 爱站查询工具旅游网站项目计划书
  • 网站被k怎么响应式网站头部
  • 论坛建立网站网络舆情优化公司
  • 网站主题旁边的图标怎么做手机wap网站免费建站
  • 广东外贸型网站建设制作网站 公司简介
  • 网站图标素材图片网页开发者工具怎么用
  • 企业做网站都需要准备哪些材料长沙会议网站设计哪家专业
  • 外贸网站建设不可缺少的灵活性网络游戏排行榜前十手游
  • 开个网站平台要多少钱wordpress如何上传产品
  • 天津如何做百度的网站浏览器正能量网站免费图片
  • 做网站是什么职业怎么查询网站的外链
  • dede手机医院网站模板网站建设和执纪监督
  • 泉州网站建设公司推荐国外最新创意产品网站
  • wordpress 主题教程 水煮鱼廊坊seo公司
  • 网站推介方案2018 84号建设厅网站