gpt4 book ai didi

c++ - 可以将自旋锁与 O(1) 非内存连续代码一起使用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:49 24 4
gpt4 key购买 nike

我正在使用自旋锁(pthread 的)通常 O(1) 锁定代码部分中的列表元素访问/删除。

我说通常是因为在 99.9% 的情况下,代码不会遍历列表(可能包含 1000 多个元素)。
代码通常会根据列表元素 hint 指针提取唯一的元素,然后执行几个 if 分支来修改引用的 hint 元素;它仍然应该是对内存的非连续访问。

使用自旋锁是个好主意还是我应该改用互斥体?

我的目标是实现最高性能,在此上下文中不关心 CPU(过度)使用情况。

干杯

最佳答案

在使用可重现的测试用例进行一些基准测试后,在 pthread mutexspinlock 实现之间切换,我可以说 if mutex 使用的 CPU 少一点,自旋锁实现处理队列外元素的速度是原来的两倍。

鉴于处理列表的函数的 O(1) 性质以及这个(大部分)常数 时间极小的事实,我相信正确的答案,支持自旋锁选择与互斥

因此,如果想要获得最佳性能,而不关心 CPU 浪费的周期,自旋锁互斥锁更可取,以防 protected 代码执行时间为微小(更好的是恒定)。

关于c++ - 可以将自旋锁与 O(1) 非内存连续代码一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com