Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > delete this ? oO |
Автор: boostcoder 17.12.2010, 07:44 | ||
всем привет. задача немного нестандартная.. и так.. есть некоторый тип, который в конструкторе стартует асинхронную операцию. по завершении асинхронной операции, объект этого типа нужно удалить. объект:
так вот.. время жизни таких объектов не более 50мс. в архитектуре приложения, использовать такие объекты на протяжении всего времени работы приложения, очень неудобно, из-за большого кол-ва таких объектов и связанных с этим блокировок синхронизаций. полагаю, создавать эти объекты налету, по необходимости, будет сильно удобней. в таком случае, время жизни таких объектов нельзя ограничивать блоком кода. поэтому придется создавать их в куче. проблема: как удалять их? в смарт поинтеры пихать нельзя, иначе получим то же ограничение блоком. вопрос: я подумал.. а что если, объекты по завершению асинхронной операции будут сами себя удалять? никогда такого не делал, потому не в курсе, насколько это допустимо. спасибо. Добавлено через 2 минуты сами объекты еще не написал. потому не могу проверить. но ответ на этот вопрос нужен уже сейчас, чтоб потом не переписывать логику приложения. |
Автор: boostcoder 17.12.2010, 07:56 | ||||||
это невозможно.... а можно каким-либо образом сделать проверку на стеке или в куче был создан объект?
к нему никто не обращается. только сам объект вызывает полученный в конструктор функциональный объект. у объекта есть собственные данные.. std::async() поддерживает move semantic? Добавлено через 4 минуты и 46 секунд т.е. по идее, это:
должно решить проблему.. |
Автор: azesmcar 17.12.2010, 08:01 | ||||
каким образом обеспечивается невозможность?
![]() функтор+std::async В каком смысле? move чего?
|
Автор: boostcoder 17.12.2010, 08:27 |
мной ![]() угу |
Автор: azesmcar 17.12.2010, 08:53 | ||
Если состояние потока вообще не интересует, то можно так
|
Автор: boostcoder 17.12.2010, 08:54 |
![]() протупил. вопрос закрыт. |
Автор: mes 17.12.2010, 09:40 | ||
можно спрятать конструктор (и добавить креаторную функцию ) или деструктор (для делете this).. |