Потокобезопасность объектов ядра
Потокобезопасность объектов ядра реализуется специальным механизмом – многопоточным кэшированием, которое обеспечивает потокобезопасный доступ к данным объекта ядра и делает возможным эффективное распараллеливание вычислений в случаях, когда объект обрабатывается одновременно в разных потоках.
Каждый поток работает со своей копией кэшированных данных, что предотвращает конкуренцию за данные между потоками. Управляет многопоточными кэшами менеджер кэшей, который отвечает за создание, хранение и выдачу кэшированных данных объекта для текущего потока.
Важно, что многопоточное кэширование эффективно работает как при многопоточных вычислениях, так и при последовательном выполнении вычислений. Несомненным плюсом является и то, что переход к использованию многопоточных кэшей требует минимальной переработки кода. При этом надо учитывать накладные расходы на поддержку многопоточных кэшей:
Несколько увеличивается использование памяти.
При отсутствии параллельности могут присутствовать незначительные дополнительные затраты времени на получение кэшированных данных.
Механизм многопоточных кэшей может быть включен или отключен при переключении режима многопоточности ядра.