Итак, мои вопросы:
-
Как сама ОС (или сам ЦП) знает, какие ядра необходимо синхронизировать?
-
Он синхронизирует кеш всех ядер процессора?
-
Если ответ на (2) есть "да" и предполагается, что операции синхронизации не являются дешевыми, использует ли память затворы замедляющие ядра, которые не используются моим приложением? Если, например, у меня есть одно потоковое приложение, работающее на моем 8-ядерном процессоре, это замедлит все остальные 7 ядер процессора, потому что некоторые строки кэша должны синхронизироваться со всеми этими ядрами?
-
Являются ли вышеперечисленные вопросы совершенно неосведомленными и заборы работают совершенно по-другому?