История изменений
Исправление hateyoufeel, (текущая версия) :
Другой пример больше касается STL, но тем не менее: объект, в котором приблизительно 100500 shared pointer’ов. Программа висела секунд 10 на выходе в деструкторе, каждый из которых захватывал лок, что-то делал, после чего отпускал его.
А кто их туда засунул? Кто их туда засунул, га?
Конечно решилось заменой STL’овой лапши на свою реализацию, для которой thread safety была уже опциональной.
Ну и балда. В нормальном мире для закрытия программы просто делают отдельный code path с деинициализацией только внешних ресурсов (файлы, сокеты и т.д.).
Только всё это не является свойством C++ ни в коей мере. Гномеры вот ровно такое же переусложнённое говно на чистом C лепят.
Исходная версия hateyoufeel, :
Другой пример больше касается STL, но тем не менее: объект, в котором приблизительно 100500 shared pointer’ов. Программа висела секунд 10 на выходе в деструкторе, каждый из которых захватывал лок, что-то делал, после чего отпускал его.
А кто их туда засунул? Кто их туда засунул, га?
Конечно решилось заменой STL’овой лапши на свою реализацию, для которой thread safety была уже опциональной.
Ну и балда. В нормальном мире для закрытия программы просто делают отдельный code path с деинициализацией только внешних ресурсов (файлы, сокеты и т.д.).