Из-за примеров наводнения при использовании регистратора с использованием шаблона Singleton я только что написал простой регистратор C++ в том же подходе для моей программы. Тем не менее, поскольку известный метод блокировки с двойной проверкой, как известно, не более потокобезопасен, мне интересно:Простой регистратор C++ с использованием шаблона singleton
1) Забудьте об использовании шаблона Singleton в этом случае?
2) Продолжайте использовать блокировку с двойной проверкой, даже если она небезопасна?
3) Использовать дорогостоящий метод блокировки чистой синхронизации для каждого доступа к его общедоступным интерфейсам?
Любые предложения?
Вау, я не ожидал, что ответы придут так быстро. Я просто понимаю, что совершил тупую ошибку. В моем случае в основном есть две группы интерфейсов, которые требуют защиты: getInstance(), а остальные - для клиента регистратора для инициализации различных параметров журнала. Моя ошибка заключалась в том, что я потратил много времени, чтобы найти подход, который будет защищать оба типа интерфейсов, надеюсь, с сбалансированной эффективностью. Почему я должен использовать один и ТОЛЬКО один подход? Я могу использовать либо предложение от Arkaitz, либо stefaanv для getInstance(); затем используйте базовую синхронизацию для инициализации настроек. – shiouming