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

包装设计网站欣赏免费行情软件网站大全

包装设计网站欣赏,免费行情软件网站大全,山东莱芜疫情最新消息今天,东莞行业网站建设错误的写法&#xff1a; 这里的<-ch 是为了从channel 中读取 数据&#xff0c;为了不使channel通道被写满&#xff0c;阻塞 go 协程数的创建。但是请注意&#xff0c;go workForDraw(v, &wg) 是不阻塞后续的<-ch 执行的&#xff0c;所以就一直go workForDraw(v, &…

错误的写法:
这里的<-ch 是为了从channel 中读取 数据,为了不使channel通道被写满,阻塞 go 协程数的创建。但是请注意,go workForDraw(v, &wg) 是不阻塞后续的<-ch 执行的,所以就一直go workForDraw(v, &wg) 拉起新的协程。这么是达不到控制协程并发数10 的目的
在这里插入图片描述

正确的写法:
直接将<-ch 写入workForDraw 方法里面的最后,这样只有 该 go 协程的任务 workForDraw 完成之后才会执行 <-ch ,使channel管道中的缓冲释放一个。
这样就把 <-ch 和 go 协程持有的任务 workForDraw 强制绑定,只有完成任务才会 <-ch ,如果不完成,只要channel通道的缓冲不满10 就可以继续创建新的go 协程持有workForDraw。直到缓冲满到10 为止

func ListenRedisQue() {ch := make(chan int, 10)var wg sync.WaitGroupfor {keyData, err := config.GetRedisClient().Keys(global.RedisQueueKey + "*").Result()fmt.Println("ListenRedisQue start for", keyData)if err != nil {fmt.Println("redis queue empty!!")return}for _, v := range keyData {ch <- 1wg.Add(1)go workForDraw(v, &wg, ch)}wg.Wait()}
}func workForDraw(queueKey string, wg *sync.WaitGroup, ch chan int) {defer wg.Done()<-ch 
}

在这里插入图片描述
另外切记 在for 循环中,一定不能初始化 db,或者其他消耗资源,可循环使用的动作,要将初始化提到for之外,将资源以变量或者指针形式传入 for 逻辑内部使用

http://www.zhongyajixie.com/news/61316.html

相关文章:

  • 文化管 网站建设规划今日头条新闻推荐
  • 深圳十大网站建设nba在线直播免费观看直播
  • 我的网站模板下载江苏网站建设制作
  • wordpress nofollow插件郑州做网络优化的公司
  • 网站备案密码怎么找回搜索引擎排名优化方法
  • wordpress留言版苏州seo按天扣费
  • 网站策划素材免费建站免费网站
  • 网站制作咨询电话seo外包方案
  • 专业信息门户网站建设石家庄网站建设方案优化
  • 网站建设 实训网页制作软件免费版
  • iapp怎么把网站做软件注册网站流程和费用
  • wordpress 301重定向 www站长seo综合查询工具
  • wordpress文章列表分页安卓手机优化软件排名
  • 专业电商网站建设防控措施持续优化
  • 美国建设网站的条款b2b免费推广网站
  • 潍坊专升本考点搜索关键词排名优化技术
  • 神华公司两学一做网站接app推广的单子在哪接
  • 网站收录查询方法优化设计电子课本下载
  • 帮企业做网站赚钱百度北京总部电话
  • 澳洲同城app下载企业seo关键词优化
  • 凤阳做网站怎么找专业的营销团队
  • 360浏览器怎么加入可信站点淘宝产品关键词排名查询
  • 网络架构拓扑图seosem是指什么意思
  • 网站空间大小怎么查看成都关键词自然排名
  • 朋友做色情网站挣了好多钱seo排名哪家有名
  • 电子商务网站建设李洪心课后答案找关键词
  • 怎么做轮胎网站专业网站优化培训
  • 上海社区网站建设百度广告开户
  • 提供网站建设电话网上推广赚钱项目
  • 专线可以做网站seo快速工具