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

制作免费网页教程绵阳网站关键字优化

制作免费网页教程,绵阳网站关键字优化,wordpress怎么都是英文版,重庆网站建设重庆代码例子 下面代码的区别是直接调用循环变量,这里使用的就是这个变量的引用,而不是将参数的副本传递给协程执行 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/837346/

相关文章:

  • 湛江企业网站怎么建设网站建设与管理岗位
  • 招标网站哪个好教育培训类网站开发
  • 官方网站 优帮云做英文网站赚钱
  • seo营销型网站设计要点企业查官网入口
  • 网站开发的步骤过程16岁0元开网店赚钱软件
  • 宁波网站建设h5公司网站二维码怎么做的
  • 做图文的网站什么网站做美食最好最专业
  • 网站建设阶段性工作重点报价单通用模板
  • 四川省城市建设培训中心 网站wordpress 商品 模板下载
  • 网站制作公司推荐万户网站
  • 网络网站维护费怎么做会计分录免费的源码
  • 郑州企业建站策划ICP网站忘记密码
  • 进行企业网站建设规划一整套vi系统包括哪些
  • 企业网站建设晋升装修设计网页版
  • 服务器建立网站购物网站推广
  • dede网站乱码义乌建设银行交罚款网站
  • 虚拟机可以做多个网站网站百度排名查询
  • 中国深圳航空公司官方网站注册网址步骤
  • 企业门户网站模板wordpress 更多内容
  • 甘肃住房建设厅的网站湖北城市建设职业技术学院官方网站
  • 给企业做网站赚钱吗wordpress卡密销售插件
  • 电子商务网站建设与策划石狮网站建设联系电话
  • 无线设置网站厦门网站开发公司哪家好
  • 沈阳专业网站制作公司教育培训网络平台
  • 安全的网站建设服务wordpress博客主题虎嗅
  • 官方网站建设条件php旅游网站论文
  • 重庆网站运营公司怎么进入官方网站查询
  • 宁波网站制作出售自贸区网站建设
  • 视频直播网站app开发wordpress 循环菜单
  • 万盛网站建设公司中铁建设集团有限公司总部在哪