首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小互斥实现?

问小互斥实现?
EN

Software Engineering用户
提问于 2017-04-05 09:01:48
回答 1查看 1.2K关注 0票数 1

在不同平台上相对较大的std::mutex大小(例如,40个甚至80个字节)通常被解释为确保互斥量不占用相同的缓存行,因此不会产生逻辑上不必要的获取和同步活动。

然而,std::mutex通常嵌入到更大的对象中,其大小(几乎从设计上来说)对真正的共享是有害的。

最小互斥量的好设计是什么?

一个字节的自旋锁设计相当简单,但是一个“真”互斥锁,其中线程挂起直到通知是一个更大的挑战。我找不到一种可移植的方式,让线程通知另一个线程在不诉诸互斥的情况下取消挂起/解除睡眠。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-04-05 09:38:35

WTF::锁,WebKit使用的锁定库听起来像您所需要的。上面的链接详细描述了设计。

对你来说,最重要的一点是:

  • 互斥锁只使用一个字节,这足以满足自旋锁的需要.
  • 它从自旋锁定转变为阻塞,等待时间更长。这是通过线程队列实现的,线程队列与互斥体本身分离。

我不确定没有WebKit库的可用性,但是链接帖子中描述的设计原则通常是适用的。例如,有一个流行的锈锁库具有相同的设计。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/345576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档