Не должно быть большой разницы в скорости.В обоих подходах глобальное поле сначала проверяется, инициализировано ли оно, и инициализация выполняется только при необходимости.Следовательно, большую часть времени функция будет просто сравнивать, прыгать, перемещаться без какой-либо инициализации.
Когда выполняется инициализация, InterlockedCompareEtc имеет два преимущества перед блокировкой.
- Этобыстрее.
- Код короче (не нужно инициализировать блокировку и т. д.).
Я нахожу подход InterlockedCompareEtc "аккуратнее" и использую его в своем коде.Но блокировка будет работать одинаково хорошо.