LINUX.ORG.RU

История изменений

Исправление hateyoufeel, (текущая версия) :

Другой пример больше касается STL, но тем не менее: объект, в котором приблизительно 100500 shared pointer’ов. Программа висела секунд 10 на выходе в деструкторе, каждый из которых захватывал лок, что-то делал, после чего отпускал его.

А кто их туда засунул? Кто их туда засунул, га?

Конечно решилось заменой STL’овой лапши на свою реализацию, для которой thread safety была уже опциональной.

Ну и балда. В нормальном мире для закрытия программы просто делают отдельный code path с деинициализацией только внешних ресурсов (файлы, сокеты и т.д.).

Только всё это не является свойством C++ ни в коей мере. Гномеры вот ровно такое же переусложнённое говно на чистом C лепят.

Исходная версия hateyoufeel, :

Другой пример больше касается STL, но тем не менее: объект, в котором приблизительно 100500 shared pointer’ов. Программа висела секунд 10 на выходе в деструкторе, каждый из которых захватывал лок, что-то делал, после чего отпускал его.

А кто их туда засунул? Кто их туда засунул, га?

Конечно решилось заменой STL’овой лапши на свою реализацию, для которой thread safety была уже опциональной.

Ну и балда. В нормальном мире для закрытия программы просто делают отдельный code path с деинициализацией только внешних ресурсов (файлы, сокеты и т.д.).