0
Я сравниваю блокировку TAS и TTAS. Вот код:TAS vs TTAS locking
ТАС:
.globl _tas_lock_acquire
_tas_lock_acquire:
\t repeat:
\t \t lock btsw $0, (%rdi)
\t jc repeat
\t ret
.globl _tas_lock_release
_tas_lock_release:
\t lock btrw $0, (%rdi)
\t ret
TTAS:
.globl _ttas_lock_acquire
_ttas_lock_acquire:
\t try_lock:
\t \t lock btsw $0, (%rdi)
\t \t jc spinwait
\t \t ret
\t spinwait:
\t \t btsw $0, (%rdi)
\t \t jc spinwait
\t \t jmp try_lock
.globl _ttas_lock_release
_ttas_lock_release:
\t btrw $0, (%rdi)
\t ret
Если производительность ТАС блокировки можно сравнить с C++ 11 atomic_flag (без разницы), тогда TTAS намного-намного медленнее (3). Я тестирую на «Intel (R) Core (TM) i3 CPU 540 @ 3.07GHz».
В чем моя ошибка?
Вопрос о сравнении возникает из раздела «Искусство многопроцессорного программирования», глава 7, сравнивающего TAS и TTAS. – user1641854