Мой вопрос будет таким: действительно ли действительно необходимо создавать потокобезопасный синглтон?
Одиночные споры спорны, но у них есть свое применение (и я думаю, что обсуждение этих вопросов будет далеко не по теме).
Тем не менее, threadsafe синглтоны - это то, что в 99,99% случаев ненужно и 99,99% случаев реализовано неправильно (даже люди, которые должны знают, как сделать это правильно в прошлом доказали, что они ошиблись). Итак, я думаю, что в этом случае «действительно ли вам это нужно» является серьезной проблемой.
Если вы создаете экземпляр вашего синглтона при запуске приложения, например, из main (), будет только один поток. Это может быть так просто, как один раз вызвать get_global_interface_manager () или вызвать yourlibrary :: init (), который неявно вызывает get ().
Любые опасения по поводу безопасности потоков не имеют значения, как только вы это сделаете, так как в это время будет принудительно только один поток. И вы гарантированно , что это будет работать. Нет, если и когда.
Многие библиотеки, если не все, требуют, чтобы вы вызывали функцию init при запуске, так что это не является необычным требованием.