【发布时间】:2013-02-08 23:28:58
【问题描述】:
我正在使用自旋锁(pthread),一般 O(1) 在锁定的代码部分中列出元素访问/删除。
我说一般是因为在 99.9% 的情况下,代码不会循环遍历列表(可能包含 1000 多个元素)。
代码通常会根据列表元素 hint 指针仅提取一个元素,然后执行几个 if 分支来修改引用的 hint 元素;仍然应该是对内存的非连续访问。
使用自旋锁是个好主意还是应该改用互斥锁?
我的目标是最大性能,在这种情况下不要关心 CPU(过度)使用。
干杯
【问题讨论】:
-
基准测试。我认为没有人可以用您提供的详细信息为您回答这个问题。
-
性能是什么意思?我认为 cpu 使用率是性能...
-
@thang:不,使用自旋锁,CPU 使用率只会让房间升温。
-
嗯?性能可能意味着很多事情。问题是当你想要最大性能时你的意思是什么......
-
肯定与普通的 pthread 互斥锁进行比较。普通的互斥体在诉诸系统调用之前已经进行了大量的智能旋转,我想你很难自己想出一个更聪明的策略。