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

建设部网站造价咨询小程序源码是什么意思

建设部网站造价咨询,小程序源码是什么意思,做网站图片太多怎么办,店铺位置怎么免费注册定位代码例子 下面代码的区别是直接调用循环变量,这里使用的就是这个变量的引用,而不是将参数的副本传递给协程执行 for task : range taskChan {wg.Add(1)go func() {defer wg.Done()task.Do() // 使用外部循环变量}() }func DistributeTasks(taskChan &…

代码例子

下面代码的区别是直接调用循环变量,这里使用的就是这个变量的引用,而不是将参数的副本传递给协程执行

for task := range taskChan {wg.Add(1)go func() {defer wg.Done()task.Do()  // 使用外部循环变量}()
}
func DistributeTasks(taskChan <-chan *AddTask, resChan chan int) {var wg sync.WaitGroupfor task := range taskChan {wg.Add(1)go func(t *AddTask) {defer wg.Done()t.Do()}(task) // 注意要当作参数传入,而不是直接在 开启的协程 内部调用task,}wg.Wait()close(resChan)
}

结论

  • 可能导致的问题:
    • 在 Go 语言中,当你使用 go 关键字启动一个 goroutine 时,它会在一个新的并发执行单元中运行。在原始代码中,将 task 作为参数传递给匿名函数,确保了每个 goroutine 操作的 task 是独立的,因为函数参数是按值传递的,这意味着在 go 语句执行时,会将 task 的副本传递给匿名函数。
    • 如果不将 task 作为参数传递,而是直接在匿名协程 goroutine 中调用 task,由于 goroutine 可能会在 for 循环的下一次迭代开始后才开始执行,而 for 循环会不断更新 task 的值,这可能会导致 goroutine 看到的 task 值不是你期望的那个。
    • 例如:goroutine执行时间很长,而程序中开启goroutine是一个很快的过程,开启完毕之后就执行下一次for循环了,循环变量task也就变了,之前开启的goroutine执行到task.Do() 的时候,已经是其他次循环的task变量
for task := range taskChan {wg.Add(1)go func() {defer wg.Done()//假如这里有比较久的耗时操作task.Do()  // 使用外部循环变量,这时候可能已经当时那一次循环的task了,因为开启协程这段代码一下子就执行完毕}()
}
http://www.yayakq.cn/news/623155/

相关文章:

  • 品牌网站建设h5烟台网站推广
  • 建设一个网站需要多长时间做国内网站多少钱
  • 新会住房和城乡建设部网站如何在网站上做网盘
  • 网站开发需要的资源商标logo设计免费生成软件
  • 华强北做电子网站徐州网站建设公司哪个好
  • 网站管理建设总结周村区建设网站
  • 江宁网站建设要多少钱阿里巴巴国际站外贸流程
  • 网站三要西安公司官网制作
  • app网站建设 - 百度wordpress免费的吗
  • 网页制作工具的选择与网站整体风格没有关系做图文链接网站
  • 简述电子商务网站开发的研究意义网站建设个人总结
  • dede模板网站教程网站开发进阶实训报告
  • php做网站怎么布局满洲里建设局网站
  • 织梦园模板网站什么是优化问题
  • 我想建网站找谁wordpress数据库的设置
  • 做餐饮店铺哪个网站北京城乡建设官方网站
  • 怎样在织梦网站建设目录域名ip
  • 企业网站建设公司怎么收费织梦网站最下面的网站建设去除
  • 郑州校园兼职网站建设网站空间租
  • 中国建设企业银行网站首页建网站基础知识
  • 国内建站平台排名网站建设与网页的区别
  • 网站建设销售话术文本格式秦皇岛百度推广
  • 邢台做网站icp对网站内容
  • 威海百度网站建设定制类做网站多少钱
  • 做网站需要画原型图么wordpress2016免费主题
  • 厦门网站设计公司哪家好福建电商小程序厦门开发公司全国知名网站建设公司
  • 创业 建网站旅游网站制作文献
  • 做网站的电脑网站整体规划
  • 绍兴cms建站模板如何写wordpress插件
  • 河南建设监理协会网站电话权威发布意思