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

菠菜网站做首存十大最靠谱培训机构

菠菜网站做首存,十大最靠谱培训机构,加强学科网站建设,年会策划方案func worker() {select {case <-c:// ... do some stuffcase <-time.After(30 *time.Second):return} }它创建了一个计时器&#xff0c;但返回的只是计时器关联的通道 如果不从返回的通道中接收值&#xff0c;即使超时发生后&#xff0c;计时器也不会被垃圾回收 这会导致…
func worker() {select {case <-c:// ... do some stuffcase <-time.After(30 *time.Second):return}
}

它创建了一个计时器,但返回的只是计时器关联的通道
如果不从返回的通道中接收值,即使超时发生后,计时器也不会被垃圾回收
这会导致计时器泄漏,特别是在循环中使用时会创建大量无法及时回收的计时器

改进方法 调用defer 进行stop

func worker() {timer := time.NewTimer(30 * time.Second)defer timer.Stop() // 确保定时器被清理
select {case <-c:// ... do some stuffcase <-timer.C:return}
}

Kubernetes中的改进方式: 重用定时器

在maxinflight.go的代码中,使用了wait.Until函数,其内部已经正确处理了定时器的创建和清理:
(接上篇 maxinflight.go 的源码略读)


func Until(f func(), period time.Duration, stopCh <-chan struct{}) {JitterUntil(f, period, 0.0, true, stopCh)
}
func JitterUntil(f func(), period time.Duration, jitterFactor float64, sliding bool, stopCh <-chan struct{}) {var t *time.Timervar sawTimeout boolfor {select {case <-stopCh:returndefault:}jitteredPeriod := periodif jitterFactor > 0.0 {jitteredPeriod = Jitter(period, jitterFactor)}if !sliding {t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout)}func() {f()}()if sliding {t = resetOrReuseTimer(t, jitteredPeriod, sawTimeout)}// 注意这里重用了定时器select {case <-stopCh:returncase <-t.C:sawTimeout = true}
}
}
http://www.dtcms.com/wzjs/26539.html

相关文章:

  • 找人代做网站费用网站分析案例
  • 做网站赌博的推广是不是犯罪的网站流量分析
  • 南京做网站yuanmus免费做网站怎么做网站
  • 地方网站名称百度网盘搜索入口
  • 域名和空间网站宁波网络推广软件
  • 做商城网站要多少钱免费刷赞网站推广qq免费
  • 精品网站建设公网站视频
  • 西安专题门户响应式网站建设搜索广告是什么
  • 奶茶电商网站建设石家庄整站优化技术
  • 百度推广新手入门长沙网站推广seo
  • 做电子手抄报的网站长春网站优化流程
  • 做网站如何月入过万上海疫情最新消息
  • 爱站权重专业seo培训学校
  • 眉山网站建设公司微信推广方案
  • 如何做网课网站百度地图导航2022最新版
  • 网页制作的网站长春网站提升排名
  • 做推广网站的文章术语购物网站网页设计
  • 北京网站开发月薪新手怎么学网络运营
  • 四合一网站建设关键词排名快速提升
  • 建站公司咨询2021搜索引擎排名
  • 做电商网站要服务器吗网站建设优化哪家公司好
  • 自己怎么做网站怎么才能在百度上打广告
  • 平板电脑做网站吗百度注册网站
  • 深圳微信网站建设今日新闻网
  • 电子商务网站的目的申请友情链接
  • 触摸屏网站建设广告网站
  • 网站制作 ?B?T如何引流推广
  • 广州网站制作公司排名上海广告推广
  • 温州seo网站建设谷歌app官方下载
  • 公众号可以添加wordpressseo外推软件