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

秦皇岛抚宁区建设局网站学习建设网站开发app

秦皇岛抚宁区建设局网站,学习建设网站开发app,mysql做网站,wordpress 有广告插件上周#xff0c;我发布了一篇关于如何直观解释Golang中通道#xff08;Channel#xff09;的文章。如果你对通道仍然感到困惑#xff0c;请先查看那篇文章。 Go并发可视化解释 — Channel 作为一个快速复习#xff1a;Partier、Candier和Stringer经营着一家咖啡店。Partie… 上周我发布了一篇关于如何直观解释Golang中通道Channel的文章。如果你对通道仍然感到困惑请先查看那篇文章。 Go并发可视化解释 — Channel 作为一个快速复习Partier、Candier和Stringer经营着一家咖啡店。Partier负责接受顾客的订单然后将这些订单传递给厨房Candier和Stringer制作咖啡。 Gophers CafeGopher咖啡馆 在本文中我将直观解释select语句这是在Go应用程序中处理并发的另一个强大工具。Gophers和他们的虚构咖啡馆仍然是我的伙伴但这次让我们聚焦在Partier和点单部分。 情景 Gopher的Cafe意识到越来越多的顾客希望通过外卖应用程序在线订购咖啡。因此除了店内点餐外他们还选择了一个外卖应用程序。Partier会监视来自两个通道的订单并通过另一个名为queue的通道将这些订单转发给Candier和Stringer。 select { case order : -appOrders:queue - order case order : -inShopOrders:queue - order } 当这两个通道中的任何一个有订单时Partier会获取订单并将其转发到queue通道。 如果这两个通道都有订单将会选择其中一个。在实际的咖啡店中来自inShopOrders的订单可能会被优先处理。但是在Go应用程序中我们无法保证哪个订单会被选择。还要注意select语句的执行只会选择一个订单Partier不会一次选择两个订单。但是在许多应用程序中select语句通常嵌套在for循环中以便在前一个迭代中剩下的订单有机会在下一个迭代中被选择。 for {select {case order : -appOrders:queue - ordercase order : -inShopOrders:queue - order} } 但是如果这两个通道都有订单它们将再次进行公平竞争。 默认情况Default 在非高峰时段订单不多Partier花费大量时间在等待上。他认为他可以通过做其他事情来更有效地利用时间例如清理桌子。这可以通过default来实现。 for {select {case order : -appOrders:log.Println(There is an order coming from appOrders channel)queue - ordercase order : -inShopOrders:log.Println(There is an order coming from inShopOrders channel)queue - orderdefault:log.Println(There is no order on both channels, I will do cleaning instead)doCleaning()} } time.After() time.After(duration)通常与select一起使用以防止永久等待。与default不同time.After(duration)会创建一个普通的-chan Time等待duration时间的流逝然后将当前时间发送到返回的通道上。这个通道在select语句中与其他通道平等对待。正如你所看到的select语句中的通道可以是不同类型的。 shouldClose : false closeHourCh : time.After(8 * time.Hour)for !shouldClose {select {case order : -appOrders:log.Println(There is an order coming from appOrders channel)queue - ordercase order : -inShopOrders:log.Println(There is an order coming from inShopOrders channel)queue - ordercase now : -closeHourCh:log.Printf(It is %v now, the shop is closing\n, now)shouldClose truedefault:log.Println(There is no order on both channels, I will go cleaning instead)doCleaning()} }log.Println(Shop is closed, Im going home now. Bye!) 当处理远程API调用时这种技术非常常见因为我们无法保证远程服务器何时返回或是否返回。借助于context通常不需要这样做。 responseChannel : make(chan interface{}) timer : time.NewTimer(timeout)select { case resp : -
http://www.hkea.cn/news/14528686/

相关文章:

  • 松江工业区网站建设网站开发 强制兼容模式
  • 凡科网站模板下载二维码转链接在线生成器
  • 网站建设90g 吾爱破解公司建设电商型网站的作用
  • 做查询网站有哪些公众号管理平台入口
  • 分析苏宁易购网站内容建设wordpress 超级精简
  • 网站制作岗位职责比较漂亮的营销型网站
  • 了解互联网 网站新东方小吃培训价格表
  • 网站制作专业做外贸流程详细步骤
  • 知名网站开发贵州做网站的
  • 网站如何生成静态页面asp做的网站如何更新
  • 门头沟网站建设网站建设方案书模板 备案
  • 为网站的特色功能设计各种模板南京网站制作系统
  • 大庆工程建设公司网站什么网站做跨境电子商务
  • 佛山网站建设联系电话百度有刷排名软件
  • 大连网站的优化如何得到网站后台权限
  • 网站推荐你懂我的意思吧知乎wordpress在线题库
  • 北京seo网站设计深圳建设企业网站公司
  • seo黑帽优化湖南专业seo优化公司
  • 专业做能源招聘的网站wordpress php 5.2
  • 山东岩海建设资源有限公司网站wordpress下载连接插件
  • 个人网站建设规划案例中国建设学会查询网站
  • 科普重庆网站wordpress移动顶部菜单
  • 微网站收费标准杭州鼎易科技做网站太坑
  • 苏州网站定制公司哪家好网站自己怎么做的
  • 工程建设信息网站网站建设 swot分析
  • 营销型外贸网站建设公司wordpress 登陆id
  • 虚拟主机销售网站源码龙岩kk网最新招聘
  • 网站如何看是哪家公司做的网页版抖音入口
  • 科普网站建设的支持力度网上卖产品怎么推广
  • 河南网站设计公司价格桂林网络开发