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

wordpress网站管理员插件wordpress 更换空间阿里云

wordpress网站管理员插件,wordpress 更换空间阿里云,做网站还需要买服务器么,网页版传奇世界什么组合最好前言 日常开发中我们大概率会遇到超时控制的场景#xff0c;比如一个批量耗时任务、网络请求等#xff1b;一个良好的超时控制可以有效的避免一些问题#xff08;比如 goroutine 泄露、资源不释放等#xff09;。 Timer 在 go 中实现超时控制的方法非常简单#xff0c;…前言 日常开发中我们大概率会遇到超时控制的场景比如一个批量耗时任务、网络请求等一个良好的超时控制可以有效的避免一些问题比如 goroutine 泄露、资源不释放等。 Timer 在 go 中实现超时控制的方法非常简单首先第一种方案是 Time.After(d Duration) func main() {fmt.Println(time.Now())x : -time.After(3 * time.Second)fmt.Println(x) }output: 2021-10-27 23:06:04.304596 0800 CST m0.000085653 2021-10-27 23:06:07.306311 0800 CST m3.001711390time.After() 会返回一个 Channel该 Channel 会在延时 d 段时间后写入数据。 有了这个特性就可以实现一些异步控制超时的场景 func main() {ch : make(chan struct{}, 1)go func() {fmt.Println(do something...)time.Sleep(4*time.Second)ch- struct{}{}}()select {case -ch:fmt.Println(done)case -time.After(3*time.Second):fmt.Println(timeout)} } 这里假设有一个 goroutine 在跑一个耗时任务利用 select 有一个 channel 获取到数据便退出的特性当 goroutine 没有在有限时间内完成任务时主 goroutine 便会退出也就达到了超时的目的。 output: do something... timeouttimer.After 取消同时 Channel 发出消息也可以关闭通道等通知方式。 注意 Channel 最好是有大小防止阻塞 goroutine 导致泄露。 Context 第二种方案是利用 contextgo 的 context 功能强大 利用 context.WithTimeout() 方法会返回一个具有超时功能的上下文。 ch : make(chan string)timeout, cancel : context.WithTimeout(context.Background(), 3*time.Second)defer cancel()go func() {time.Sleep(time.Second * 4)ch - done}()select {case res : -ch:fmt.Println(res)case -timeout.Done():fmt.Println(timout, timeout.Err())}同样的用法context 的 Done() 函数会返回一个 channel该 channel 会在当前工作完成或者是上下文取消生效。 timout context deadline exceeded通过 timeout.Err() 也能知道当前 context 关闭的原因。 goroutine 传递 context 使用 context 还有一个好处是可以利用其天然在多个 goroutine 中传递的特性让所有传递了该 context 的 goroutine 同时接收到取消通知这点在多 go 中应用非常广泛。 func main() {total : 12var num int32log.Println(begin)ctx, cancelFunc : context.WithTimeout(context.Background(), 3*time.Second)for i : 0; i total; i {go func() {//time.Sleep(3 * time.Second)atomic.AddInt32(num, 1)if atomic.LoadInt32(num) 10 {cancelFunc()}}()}for i : 0; i 5; i {go func() {select {case -ctx.Done():log.Println(ctx1 done, ctx.Err())}for i : 0; i 2; i {go func() {select {case -ctx.Done():log.Println(ctx2 done, ctx.Err())}}()}}()}time.Sleep(time.Second*5)log.Println(end, ctx.Err())fmt.Printf(执行完毕 %v, num) } 在以上例子中无论 goroutine 嵌套了多少层都是可以在 context 取消时获得消息当然前提是 context 得传递走 某些特殊情况需要提前取消 context 时也可以手动调用 cancelFunc() 函数。 Gin 中的案例 Gin 提供的 Shutdown(ctx) 函数也充分使用了 context。 ctx, cancel : context.WithTimeout(context.Background(), 10*time.Second)defer cancel()if err : srv.Shutdown(ctx); err ! nil {log.Fatal(Server Shutdown:, err)}log.Println(Server exiting) 比如以上代码便是超时等待 10s 进行 Gin 的资源释放实现的原理也和上文的例子相同。
http://www.w-s-a.com/news/396630/

相关文章:

  • 为什么学网站开发凡科登陆
  • 设计师常备设计网站大全中山精品网站建设信息
  • 杭州建设工程网seo服务是什么
  • 兼职做问卷调查的网站wordpress mysql设置
  • 怎么在百度上能搜到自己的网站山西seo谷歌关键词优化工具
  • 网站搭建免费模板飞鱼crm下载
  • 网站开发竞品分析app制作公司深圳
  • 网站建设ssc源码修复设计班级网站建设
  • 网站重定向凡科做网站不要钱
  • 佛山html5网站建设微信营销软件破解版
  • 网站单页做301南京百度推广
  • 私人做网站要多少钱展芒设计网页
  • 怎样网站制作设计如何在网上推广农产品
  • 做关键词排名卖网站聚名网
  • 吉林省住房城乡建设厅网站首页体育器材网站建设方案
  • 网站建设及维护专业手机金融界网站
  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么
  • 手机网站维护费网站开发包括网站过程
  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网
  • 雅客网站建设做网站用什么做
  • 做宣传海报网站专业网站设计速寻亿企邦
  • 秦皇岛市住房和城乡建设局网站有关网站开发的参考文献
  • 晋城城乡建设局网站深圳外贸业务员工资
  • 招聘网站开发的公司销售运营主要做什么
  • 徐州网站无障碍建设wordpress证书
  • c语言可以做网站吗请人做网站收费多少
  • 中英双语网站怎么做网站为什么做静态