如标题所述:如何正确测试和基准化c ++中互斥锁的不同实现?
本质上,我为在2核,armv7上运行的项目编写了自己的std :: mutex类似类,目的是在无争议的情况下最大程度地减少开销。现在,我正在考虑在更多地方以及不同的体系结构中使用所说的互斥锁,但是在执行此操作之前,我想确保
- 这实际上是正确的
- 没有任何病理情况比标准的std :: mutex表现差很多。
显然,我写了一些基本的单元测试和微基准测试,一切似乎都可以用,但是在多线程代码中,“似乎可以使用”并不能给我带来很大的安慰。
- 那么,是否有已建立的静态或动态分析技术?
- 为互斥类编写单元测试时,常见的陷阱有哪些?
- 在性能方面应该注意哪些典型的极端情况?
我仅将标准库类型用于实现,其中包括对原子的非顺序一致的加载和存储操作。但是,我主要对实现不可知的建议感兴趣,因为我也想对其他实现使用相同的测试工具。
2
我知道这不是必需的,但如果支持者会就这个问题的问题发表评论,我将不胜感激。我是SE的新手,并不完全熟悉该网站的规格。
—
MikeMB
不是否决者,但是我想说,对于完全好问题的匿名否决,该网站特别糟糕。在我看来,很多人都基于我所谓的“宗教”原因而投了反对票。话虽如此,一种可能性是您正在寻求有关工具的建议,我认为这里对此并不满意。但这只是一个猜测。许多人在其他问题中都讨论过此类工具,因此请随心所欲。
—
user1118321
实际上,请查看标题为“拒绝投票,因为我们不同意asker的方法或逻辑的” 这一元文章。
—
user1118321
@ user1118321:该内容不适合该问题,因为恕我直言,该问题没有错误的假设。但是,我当前看到的3个关闭投票中有2个正在使用预定义的“第三方资源请求”关闭原因。MikeMB,您可以尝试编辑您的问题并从中删除那些部分,但是按照目前的形式,我想社区也可能因为范围太广而将其关闭。如果您缩小问题的重点,并要求specificially 什么你想测试你试过到目前为止,你可能会增加你的问题的生存机会。
—
布朗
这个问题的一个问题是“要求我们找到或推荐工具,库,编程语言,资源(包括书籍,博客,教程和示例)或要进行的项目的问题在这里不合时宜,因为它们吸引了有根据的答案,对别人没有持久的价值。”
—
David Hammen