我試圖在我的代碼中實現自旋鎖,但是我基於維基百科實現的自旋鎖導致性能極其低下。有沒有簡單的方法來提高此自旋鎖功能的性能?
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()'之外的代碼,看看你如何減少爭用。或者你可能想選擇旋轉鎖定幾次,然後退出並做一些有用的事情(或睡眠)。 – 2012-08-12 15:07:05