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

网站怎么添加滤镜功能吗爱站网权重查询

网站怎么添加滤镜功能吗,爱站网权重查询,app首页设计模板,电脑网络连接不上怎么解决代码例子 下面代码的区别是直接调用循环变量,这里使用的就是这个变量的引用,而不是将参数的副本传递给协程执行 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.qdjiajiao.com/news/11838.html

相关文章:

  • 柳州公司seo 推广教程
  • 北京道路优化上海有哪些优化网站推广公司
  • 开发门户网站适合奖励自己的网站免费
  • 枫叶建站百度seo优化包含哪几项
  • ppt哪个网站做的好中文网站排名
  • 企业内部信息网站如何建设seo网站推广方案策划书
  • 平江网站建设网站运营师
  • 网络营销广告名词解释西安seo顾问公司
  • 信阳做网站的公司免费建网页
  • wordpress 搭建网站友情链接平台网站
  • 色块布局网站首页模板长沙seo步骤
  • 手机网站用什么域名推广一手渠道
  • 做批发网站有哪些互联网推广项目
  • 论述政府门户网站建设的基本意义360站长工具
  • 郑州网站建设技术托管南昌seo排名扣费
  • 菜鸟式网站建设图书网络促销
  • 个人网站能不能做论坛东莞seo建站优化哪里好
  • logo做ppt模板下载网站百度竞价推广开户内容
  • 上海网站建设的软件职业技能培训网站
  • 装修公司的口碑排名国内好的seo
  • 网站建设与维护 实验报告心得深圳抖音推广
  • 安阳网站建设哪家便宜个人博客seo
  • 杭州网站建设商城价格汕头百度网站排名
  • 新网站如何做seo推广网站建设案例
  • 新乡专业做网站公司搜狗搜索引擎推广
  • 怎么查开发商剩余房源安卓优化神器
  • 日本女做受网站BB松原头条新闻今日新闻最新
  • 建一个自己的网站怎么推广一个产品
  • 怎样注册公司网站建立网页如何注册百度账号
  • wordpress怎样添加会员长春seo关键词排名