Go:互斥体和饥饿

Go:互斥体和饥饿,第1张

在Golang中进行开发时,互斥锁在不断尝试获取永远无法获取的锁时会遇到 饥饿 问题。在本文中,我们将探讨影响Go 1.8的饥饿问题,该问题已在Go 1.9中解决。

为了说明互斥锁的饥饿状况,我将以 拉斯·考克斯 ( Russ Cox)提出的 关于他们讨论互斥锁改进的 问题 为例:

starvation.go

此示例基于两个goroutine:

两者都具有100微秒的周期,但是由于goroutine 1一直在请求锁定,因此可以预期它将更频繁地获得锁定。

这是一个用Go 1.8进行的示例,该示例具有10次迭代的循环的锁分配:

该互斥锁已被第二个goroutine捕获了十次,而第一个则超过了700万次。让我们分析一下这里发生了什么。

首先,goroutine 1将获得锁定并睡眠100微秒。当goroutine 2尝试获取锁时,它将被添加到锁的队列(FIFO顺序)中,并且goroutine将进入等待状态:

Figure 1 — lock acquisition

然后,当goroutine 1完成工作时,它将释放锁定。此版本将通知队列唤醒goroutine 2。Goroutine 2将被标记为可运行,并正在等待Go Scheduler在线程上运行:

Figure 2— goroutine 2 is awoke

但是,在goroutine 2等待运行时,goroutine 1将再次请求锁定:

Figure 3— goroutine 2 is waiting to run

当goroutine 2尝试获取锁时,它将看到它已经具有保持状态并进入等待模式,如图2所示:

Figure 4— goroutine 2 tries again to get the lock

goroutine 2对锁的获取将取决于它在线程上运行所花费的时间。

现在已经确定了问题,让我们回顾可能的解决方案。

处理互斥量的方法有很多,例如:

barging mode

Go 1.8就是这样设计的,它反映了我们之前看到的内容。

handoff mode

我们可以 在Linux内核 的 互斥体中 找到此逻辑:

在我们的情况下,互斥锁切换会完美平衡两个goroutine之间的锁分配,但是会降低性能,因为这将迫使第一个goroutine即使未持有也要等待锁。

spinning mode

Go 1.8也使用此策略。当试图获取已经持有的锁时,如果本地队列为空且处理器数量大于一,则goroutine将旋转几次-如果仅使用一个处理器旋转就会阻塞程序。旋转后,goroutine将停放。如果程序大量使用锁,它可以作为快速路径。

有关如何设计锁的更多信息( 插入 ,越区切换,自旋锁),通常, Filip Pizlo撰写 了必读的文章“WebKit中的锁定 ”。

在Go 1.9之前,Go结合了插入和旋转模式。在1.9版中,Go通过添加新的饥饿模式解决了先前解释的问题,该模式将导致在解锁模式期间进行切换。

所有等待锁定时间超过一毫秒的goroutine,也称为 有界等待 ,将被标记为饥饿。当标记为饥饿时,解锁方法现在将把锁直接移交给第一位服务员。这是工作流程:

starvation mode

由于进入的goroutine将不会获取任何为下一个服务员保留的锁,因此在饥饿模式下也将禁用旋转。

让我们使用Go 1.9和新的starvation模式运行前面的示例:

现在的结果更加公平。现在,我们想知道新的控制层是否会对互斥体不处于饥饿状态的其他情况产生影响。正如我们在该程序包的基准测试(Go 1.8与Go 1.9)中所看到的,在其他情况下,性能并没有下降(不同处理器数量下, 性能会略有变化 ):

翻译自: https://medium.com/a-journey-with-go/go-mutex-and-starvation-3f4f4e75ad50

玩法模式:

先放张图 打了两个小时才拿了第一,这是胜利飞升瞬间。

几个小要点:

首先 开始时大家会降落在一个平台周围开始抢东西

平台上会刷出大量的包裹 就和你扔地上的那种差不多啦

不过感觉大部分没啥卵用 我抢了几次都是水袋+熟肉+麻醉箭

不要在这里太过纠缠 否则会成为最早离开的那一批

拿到一些有用的东西之后直接带着基友跳下平台 坠落并不会受伤 随便跳

接下来有两种套路:

1.全图找红光!红光里会有枪械/铁甲/爆炸物/材料等等

拿到之后就可以开始继续找下一个了 顺便抽死路上看到的光屁股裸屌们

这个选择的优势是可以积累大量装备 也是我一直在用的方式 要点是多!杀!人!

因为被杀的人会提供大量经验 差不多能让你升个几级 而且可以扼杀一些前期的威胁

大概过个一小时的时候就转移到中间平台附近 准备抢黄光 里面好东西还是不少的 刷新点就在那个抢东西的平台里

这时候一般应该就没啥人了…………借助特殊事件【下面会说到】来开始猎杀吧

2.这个套路我没用过 只是看到两个人再用 可惜被我们早期扼杀在摇篮里了 不过能看出他们的想法

他们是躲到了一个小树林里面 然后开始疯狂的驯龙 当我们借助特殊事件找到他们的时候 已经有了两只三角龙

地上还七七八八的躺了一堆正在驯养的恐龙 不过他们太专注于驯龙结果就悲剧了

估计他们的套路是用恐龙大军平A过去 不需要鞍具 遇到人只要随便打他一下 龙群就直接焦作人了

这种套路我觉得后期比较无解 毕竟人家兄弟多……你俩人再厉害也打不过一群龙……而且地图慢慢缩小 到时候都没地方逃

下面说几个需要注意的地方:

首先 掉落不会受伤 多高的悬崖都可以跳下去 放心 至于老鹰抓人 估计也应该摔不死

其次 驯龙的速度大幅度增加 我训了一头老鹰 放了几块大排几分钟就起来了……

最后说一下几个特殊事件:

1.MEGACOLD 这个是极寒状态 全服都变得特别冷……但是感觉没啥卵用 没看见有人冻死的

2.玩家追踪 我一般把这个叫渡劫模式 你身上会有一股圣光直冲云霄 并且你走它也走 全地图都看得到…当然你也可以看到别人的 杀戮的好机会

3.玩家定位 这个和追踪差不多 唯一区别就是你移动之后光柱不会跟随你移动 只会标记你之前的地点

4.暴龙大礼包 几秒之后你身后会天降暴龙/牛龙/棘背龙等等 不过我遇到的都是一级的 想杀想养随你

5.好像叫SUPERLOOT啥的?忘了 反正就是地图中间大平台刷出一个巨大的瞎狗眼金光 里面有不少好东西


欢迎分享,转载请注明来源:优选云

原文地址:https://54852.com/hy/446395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-11
下一篇2023-03-11

随机推荐

  • 资生堂男士活力均衡水适合多大年龄女生可以用吗

    资生堂男士活力均衡水是一款男士专属护肤品,那么资生堂男士活力均衡水适合多大年龄?资生堂男士活力均衡水女生可以用吗?下面我将为你带来资生堂男士活力均衡水最详细的介绍和分析,让你有一个愉快的购物体验,持续关注还有超多的福利和惊喜等你来领取哦~

    2023-12-14
    34200
  • 上海凤晓集装箱服务有限公司怎么样

    上海凤晓集装箱服务有限公司是2016-01-28在上海市宝山区注册成立的有限责任公司(自然人投资或控股),注册地址位于上海市宝山区沪太路6395号1-2层A区1046室。上海凤晓集装箱服务有限公司的统一社会信用代码注册号是91310113

    2023-12-14
    16400
  • jomalone身体乳底部有D37表示什么

    编号。jomalone翻译成中文是祖玛珑的意思,祖玛珑是设计师JoMalone创立的英国化妆品品牌。属于雅诗兰黛集团。质朴的包装,透露着浓厚的英伦风情。jomalone有很多商品种类,包括香水、沐浴露、身体乳等,身体乳底部有D37表示的是产

    2023-12-14
    17900
  • idsl什么游戏适合女生玩

    NDSL上女孩子也适合玩的清新类游戏很多,特此发个贴,写的只能算是一点点,不够的地方希望大家可以帮助一起贴发,让后面刚买新机的朋友或者是女玩家看下,也省的到处找!! Ma} NNpH`dK3ZE`w}Rg94中文NDS游戏: q

    2023-12-14
    18800
  • 屈臣氏里的哪个化妆品最值得购买

    最有名的就属屈臣氏的燕窝精华面膜了。是明星产品呐,没有人不知道的,用上很舒服,面膜很服帖,而且有30ml的精华液。记住用完之后把袋子里的精华液都挤出来擦脖子全身,都很滋养的,而且价钱不贵,小蜜缇的一生推,打折的时候十八块钱买了一管,每次挤一

    2023-12-14
    14900
  • 26岁适合用什么牌子的化妆品

    可以用温和型补水美白滋润的护肤品,26岁不需用那些功效很明显的产品,像玉兰油、欧莱雅之类都是适合35岁左右的人用,本人觉得过早用会早衰。佰草集不错,比较贵。说说我现在的护理,本人25岁,21岁开始用,我觉得我是大众类型,很多牌子都适合用,建

    2023-12-13
    15200
  • 国货品牌哪个好护肤品

    国内护肤品的品牌有:百雀羚(Pechoin)、相宜本草(INOHERB)、佰草集(Herborist)、韩束(KANS)、欧诗漫(OSM)。1、百雀羚(Pechoin)百雀羚属于是中等偏上的档次,百雀羚创立至今已有88年的历史,是上海老牌国

    2023-12-13
    16600
  • 韩国化妆品有什么牌子

    1、梦想时间Dreamtimes的产品秉承了韩国化妆品实惠好用的精髓,也是很多韩国明星在节目中公开支持的经典韩国化妆品品牌。其产品专注于解决年轻人的皮肤问题。自进入中国市场以来,受到了牛二、大s等美妆大师的青睐,近年来凭借高性价比和卓越功效

    2023-12-13
    23800
  • 化妆品公司取名推荐 化妆品店起名名字集

    大部分女孩子都会有购买化妆品的需求,这是因为化妆品可以遮掩容貌的瑕疵。如果你打算开一家化妆品公司,那么如何吸引到第一批顾客就是个大难题。一般来说,消费者往往会选择那些名字好听顺口、大气有寓意的化妆品公司。化妆品公司取名推荐丝路化妆品公司娜娥

    2023-12-13
    13900

发表评论

登录后才能评论
保存