2014-10-12 2 views
0

Так что по какой-то причине у меня возникли проблемы с пониманием полной концепции о том, почему функция Test and Test и Set будет работать быстрее, чем функция Test and set из книги названный в названии. Позвольте мне подробнее ...Лучшее объяснение TAS Vs. TTAS в контексте «Искусство многопроцессорного программирования» Herlihy & Shavits

В приведенной выше справочной книге приложение добавляет, что она немного отличается от архитектуры компьютера. Я уже довольно хорошо понимаю это. Далее следует, что TTAS быстрее, чем функция TAS из-за кэширования. Я не понимаю, как и почему. Не будет ли кеширование функции TTAS аналогично функции TAS. Какая часть функции TAS заставляет ее работать дольше или что заставляет работу TTAS работать короче.

ответ

6

У каждого потока есть собственный кеш. Кэш обновляется только тогда, когда переменная помечена как грязная. TAS (на уровне ОС) помечает переменную как грязную, когда она вызывается, независимо от того, удалось ли ей установить значение или нет. Это и вызывает большие накладные расходы.

Из-за этого все потоки постоянно недействительны для кеша. В случае TTAS вы избегаете многократного вызова TAS и, следовательно, только недействительны кеширование, теперь гораздо реже, вызовы TAS и когда вы отпускаете блокировку.

Имейте в виду, что это то, чему нас учили, и что у меня нет ссылки для вас, поэтому вы можете захотеть найти ее еще.

Смежные вопросы