Jig*_*uff 2 c inline-assembly spinlock
我正在尝试在我的代码中实现一个自旋锁,但是我基于Wikipedia实现的自旋锁导致了极慢的性能.
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");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法改善这一点,使其更快?
谢谢.
这样的事情怎么样(我明白这是KeAcquireSpinLock实现).不幸的是,我的at&t大会很弱.
spin_lock:
rep; nop
test lockValue, 1
jnz spin_lock
lock bts lockValue
jc spin_lock
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
895 次 |
最近记录: |