Я прочитал много вопросов, связанных с безопасным двойным проверением блокировки (для одиночных или ленивых init). В некоторых потоках ответ заключается в том, что шаблон полностью сломан, другие предлагают решение.
Итак, мой вопрос: есть ли способ написать полностью проверенный по потоку двойной проверенный шаблон блокировки в С++? Если да, то как это выглядит.
Мы можем предположить С++ 11, если это упростит ситуацию. Насколько я знаю, С++ 11 улучшил модель памяти, которая может обеспечить необходимые улучшения.
Я знаю, что это возможно на Java, делая двойную проверку защищенной переменной volatile. Поскольку С++ 11 заимствовал большие части модели памяти из одной из Java, поэтому я думаю, что это возможно, но как?