本文介绍了有没有改善这种自旋锁功能的性能有任何简单的方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想实现我的code自旋锁,但我根据维基百科的结果极其缓慢的性能实现了自旋锁。
I'm trying to implement a spinlock in my code but the spinlock that I implemented based on Wikipedia results in extremely slow performance.
int lockValue = 0;
void lock() {
__asm__("loop: \n\t"
"movl $1, %eax \n\t"
"xchg %eax, lockValue \n\t"
"test %eax, %eax \n\t"
"jnz loop");
}
有没有改进这个问题的任何方式,使其更快?
Is there any way of improving this to make it faster?
感谢。
推荐答案
如何像这样(我的理解,这是KeAcquireSpinLock实现)。我在与安培; T汇编薄弱不幸
How about something like this (I understand this is the KeAcquireSpinLock implementation). My at&t assembly is weak unfortunately.
spin_lock:
rep; nop
test lockValue, 1
jnz spin_lock
lock bts lockValue
jc spin_lock
这篇关于有没有改善这种自旋锁功能的性能有任何简单的方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!