当前位置: 首页 > 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/325798/

相关文章:

  • 做网站一定要买主机吗定制高端网站建设报价
  • 做网站内嵌地图163企业邮箱登录入口官网
  • 三门峡做网站推广网站建设语言都有什么
  • 青岛市网站建设惠州建设集团网站
  • 连江网站建设服务宿松网站建设公司
  • 网页与网站设计什么是主题有一个做ppt的网站
  • 精品课程网站建设开题报告有人看免费的视频吗
  • 辽宁建设工程信息网上报名了但未投标可以参加开标吗成都seo优化排名公司
  • 珠海网站建设专业设计当当网电子商务网站建设特点
  • 潍坊 网站推广寻求一个专业网站制作公司
  • 网站集约化建设报告html5网站演示
  • 河南平顶山网站建设与管理专业当面付 wordpress
  • 个人主页怎么填平台seo什么意思
  • 域名买好了怎么做网站网站推广公司排行榜
  • 视差设计网站网页代码
  • 购买网站空间送域名呼和浩特市做网站公司好的
  • 中国建设教育网站网址大全qq浏览器
  • 机械网站建设价格小程序商城装修
  • 新手学做网站教程广告网络
  • 随州网站网络营销百科
  • 合肥网站搜索引擎优化网站开发流程中客户的任务是什么
  • 响应式网站模板的应用网站源代码使用
  • 公司的网站费怎样做会计分录wordpress 通用代码 网页
  • 石家庄网站建设推广公司电话互联网做网站怎么赚钱
  • 手机 网站 系统虚拟货币网站建设
  • 收费抽奖网站网页开发价格
  • 成功的营销网站的例子网站源代码程序
  • 用单页做网站 文章直接写上去 百度收录关键词吗浏览器网站免费进入
  • 网站栏目结构优化商城网站开发方案书
  • 做外贸网站好还是内贸网站好安顺公司做网站