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

随机推荐

  • 阿玛尼ar60007值得买吗

    值得。安普里奥·阿玛尼AR60007是一款男士手表,性价比高,款式新颖,值得购买。1、性价比高。全自动机械表,看起来有质感,表带是意大利牛皮表带,戴起来很舒服,价格在3500左右。2、款式新颖。表盘是采用镂空设计,质感十足,看起来更适合年轻

    2023-12-14
    24400
  • 黛珂水乳霜液的使用顺序

    黛珂水乳霜精华液的使用顺序黛珂水乳霜精华液的使用顺序,不同的护肤品的使用方法和总是有所不同,黛珂是比较有名的一个护肤品牌,在生活中有很多人都会使用黛珂,下面分析黛珂水乳霜精华液的使用顺序黛珂水乳

    2023-12-14
    38100
  • 哪种隔离霜好

    哪个隔离霜比较好,什么牌子的隔离霜好,介绍几款最好用隔离霜雅漾日间隔离乳真实试用雅漾这个牌子听到很久,也是大品牌了,一直觉得专门针对敏感肌的话可能会在保湿等方面有所欠缺。这次使用了隔离霜和卸妆水之后改变了之前刻板的印象,可以说是路转粉了。寄

    2023-12-14
    25200
  • 伊丽莎白雅顿面霜价格

    伊丽莎白雅顿面霜产品的价格大概是在159元左右,不同的渠道可能会有上下的浮动,伊丽莎白雅顿的面霜是一款补水面霜,而且是一款复合的面霜,效果是非常不错的,一般情况下使用21天之后就会有明显的改善效果,产品的规格是75毫升,最主要的成分就是角鲨

    2023-12-14
    20500
  • 玫瑰护肤品的功效与作用 玫瑰护肤品有什么好处

    1、抗氧化功效。玫瑰富含的维生素C是最有效的抗氧化物质,作用于细胞中,具有很明显的抗氧作用,可以帮助肌肤抵抗衰老,维持健康年轻的肌肤。 2、保湿滋润。玫瑰中的糖具有强大的保湿和锁水功能,对于干燥的肌肤,能够起到显著的保湿和锁水效果,同时,玫

    2023-12-14
    18200
  • 中国中低端化妆品市场的份额有多大

    国产化妆品以薄利多销,控制着中低档市场,约30%的市场份额,呈现各踞一方的局面。目前,洋品牌化妆品的销量已占到中国化妆品总销量的60%左右,销售额更占到90%左右;因此,有人把本土品牌的现状形容为"生活在水深火热之中"。

    2023-12-13
    28300
  • BB霜是什么东西

    BB霜(BBCream) 就是BlemishBalmCream的缩写,是为了保护,安定和舒缓肌肤而研发的新型纯天然粉底。它是来自韩国,将修复、保湿、润色、控油一次完成,成为超人气商品。BB霜原来是对剥皮或美白(增白)后,受损和损伤的皮肤保护

    2023-12-13
    28200
  • 消除青春痘有什么好药膏介绍!

    野菊花煎水巧治青春痘许多处于发育阶段的年青人往往因为体内激素、皮肤抗菌能力和防护能力等因素的影响,面部特别容易长痤疮(青春痘)。虽然对健康并无大碍,但影响了美观。我曾经就有过一段经历,不过有朋友曾经告诉我一个简单易行的方法,用完之后我感觉效

    2023-12-13
    19600
  • 广州市高姿化妆品有限公司待遇

    广州市高姿化妆品有限公司提供的待遇包括:1 公司提供市场竞争力的薪酬待遇,根据员工的能力和工作表现,提供合理的薪酬福利。2 公司提供完善的社会保险和住房公积金,为员工提供全面的社会保障。3 公司提供完善的培训机制,不断提升员工的专业技能,提

    2023-12-13
    18700

发表评论

登录后才能评论
保存