Найдено по тесту AndSet wiki:
Четырьмя основными метриками оценки для блокировок в целом являются неконтролируемая задержка получения блокировки, трафик шины, справедливость и хранение.
Низкие оценки по двум тестам, а именно: высокий автобусный трафик и несправедливость.
Когда процессор P1 получил блокировку и процессор P2 также ожидает блокировку, P2 будет продолжать выполнять транзакции шины при попытках получить блокировку. Когда процессор получил блокировку, все остальные процессоры, которые также хотят получить такую же блокировку, продолжают пытаться получить блокировку, многократно инициируя транзакции шины, пока не получат блокировку. Это значительно увеличивает требования к тестированию и настройке шины. Это замедляет весь остальной трафик из кэша, что приводит к потере согласованности. Это замедляет весь раздел, так как трафик насыщается неудачными попытками получения блокировки. Test-and-test-and-set является улучшением по сравнению с TSL, поскольку он не инициирует запросы получения блокировки постоянно.
Когда мы учитываем справедливость, мы учитываем, имеет ли процессор реальный шанс получить блокировку, когда он будет освобожден. В экстремальной ситуации процессор может голодать, т. Е. Он не сможет получить блокировку в течение длительного периода времени, даже если за это время он освободился.
Затраты на хранение для TSL практически ничем не отличаются, поскольку требуется только одна блокировка. Неограниченная задержка также низка, так как требуется только одна атомарная инструкция и ветвь.