코드에 스핀 록을 구현하려고하지만 위키 피 디아를 기반으로 구현 한 스핀 록은 성능이 매우 떨어집니다.이 스핀 락 기능의 성능을 향상시킬 수있는 간단한 방법이 있습니까?
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");
}
이 기능을 향상시켜 더 빨리 만들 수있는 방법이 있습니까?
감사합니다.
난 당신이 잘못된 일을 최적화하기 위해 노력하고 생각합니다. 잠금 경합이 너무 많다면, 알고리즘을'lock()'밖의 코드로 다시 생각해야한다. 또는 자물쇠를 단지 몇 번 돌린 다음 다시 돌아와서 유용한 (또는 수면) 무언가를 할 수도 있습니다. –