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

网站访问统计怎么做seo搜索引擎优化原理

网站访问统计怎么做,seo搜索引擎优化原理,访问一个网站的全过程,模板网页制作前言 函数原型为: func AfterFunc(d Duration, f func()) *TimerGo 的 time.AfterFunc 的作用是等待指定的时间间隔,然后在它自己的 goroutine 中调用 f。 现在有一个问题,我明明调用了 AfterFunc,但是它还没调用我指定的函数&…

前言

函数原型为:

func AfterFunc(d Duration, f func()) *Timer

Go 的 time.AfterFunc 的作用是等待指定的时间间隔,然后在它自己的 goroutine 中调用 f

现在有一个问题,我明明调用了 AfterFunc,但是它还没调用我指定的函数,程序就退出了。程序如下所示:

package mainimport ("fmt""time"
)func main() {time.AfterFunc(5*time.Second, func() {fmt.Println("5s passed")})
}

这段代码什么都没打印就结束了。

问题解决

上面的问题看起来像是 main goroutine 退出了,程序直接退出,还没来得及调用我们指定的函数。

下面就通过源码来看看是不是我们猜测的这样,AfterFunc 的源码如下:

func AfterFunc(d Duration, f func()) *Timer {t := &Timer{r: runtimeTimer{when: when(d),f:    goFunc,arg:  f,},}startTimer(&t.r)return t
}

上面的代码很简单,先构造一个定时器,然后启动定时器。定时器的内容也很好理解,在 when: when(d) 时间,调用 f: goFunc 函数,函数的参数是 arg: f。

when(d) 的值是什么呢?

func when(d Duration) int64 {if d <= 0 {return runtimeNano()}t := runtimeNano() + int64(d)if t < 0 {t = 1<<63 - 1 // math.MaxInt64}return t
}

可以看到 when 就是当前时间,再加上我们指定的时间间隔。

那 goFunc 又是什么呢?

func goFunc(arg any, seq uintptr) {go arg.(func())()
}

这个函数的作用就是创建一个 goroutine,在 goroutine 内运行 arg 函数。

arg 就是我们传给 AfterFunc 要运行的函数,先使用类型断言将其转换成函数,然后再运行它。

于是,问题就解决了,就是因为 main goroutine 先退出了,导致程序直接退出,还没来得及执行我们指定的打印函数。下面给出两种解决方案:

使用 select 替换 AfterFunc:

func main() {select {case <-time.After(5 * time.Second):func() {fmt.Println("5s passed")}()}
}

使用 WaitGroup 等待其他 goroutine 结束:

func main() {var wg sync.WaitGroupwg.Add(1)time.AfterFunc(5*time.Second, func() {defer wg.Done()fmt.Println("5s passed")})wg.Wait()
}

参考资料

  • go1.18.10
http://www.wangmingla.cn/news/113846.html

相关文章:

  • 锦州 做网站电商营销推广方法
  • 旅游门户网站建设知乎关键词优化软件
  • 网页模板素材网站百度知道个人中心
  • 长沙网站制作工作室知名公司长沙优化科技有限公司
  • 植物提取网站做的比较好的厂家google ads 推广
  • 新兴街做网站公司合肥百度推广优化
  • 上饶网站优化公司官网怎么制作
  • 西乡建网站公司seo网站有优化培训吗
  • 做天猫网站价格表建立自己的网站平台
  • 凡科免费建站9个广州seo推广神技
  • 黄浦上海网站建设长沙线上引流公司
  • 9.9元包邮网站怎么做seo搜索引擎优化推荐
  • 邯郸网站开发公司电话seo搜索引擎优化培训班
  • 深圳哪个网站发布做网站百度指数有什么参考意义
  • 网站建设里面链接打不开短视频营销成功案例
  • 可以做软文推广的网站网站设计就业
  • 佛山商城网站制作发布新闻的平台有哪些
  • 优秀的政府网站建设东莞seo优化排名
  • 学习网站建设网站怎样优化文章关键词
  • 网站建设与运营就业网站seo技术教程
  • 潍坊高新建设局网站seo优化神器
  • 浙江疫情最新消息2020石家庄整站优化技术
  • 室内设计师联盟首页莆田seo
  • 如何入侵网站服务器火爆产品的推广文案
  • 中小型网站建设平台网站优化外包多少钱
  • 响应式网站建设原则百度一下百度一下你就知道
  • 如何提升网站打开速度2023上海又出现疫情了
  • ai智能建站seo网站优化网站编辑招聘
  • 网站优化建设宁夏网站视频
  • 在新西兰做兼职的网站b2b网站