![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем привет.
задача немного нестандартная.. и так.. есть некоторый тип, который в конструкторе стартует асинхронную операцию. по завершении асинхронной операции, объект этого типа нужно удалить. объект:
так вот.. время жизни таких объектов не более 50мс. в архитектуре приложения, использовать такие объекты на протяжении всего времени работы приложения, очень неудобно, из-за большого кол-ва таких объектов и связанных с этим блокировок синхронизаций. полагаю, создавать эти объекты налету, по необходимости, будет сильно удобней. в таком случае, время жизни таких объектов нельзя ограничивать блоком кода. поэтому придется создавать их в куче. проблема: как удалять их? в смарт поинтеры пихать нельзя, иначе получим то же ограничение блоком. вопрос: я подумал.. а что если, объекты по завершению асинхронной операции будут сами себя удалять? никогда такого не делал, потому не в курсе, насколько это допустимо. спасибо. Добавлено через 2 минуты сами объекты еще не написал. потому не могу проверить. но ответ на этот вопрос нужен уже сейчас, чтоб потом не переписывать логику приложения. |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
теоретически - допустимо, но связано со множеством проблем. Во первых если объект не был создан по средствам оператора new, будет нехорошо. Во вторых нужно быть уверенным, что никто после этого не попытается обратиться к объекту.
А зачем для этого нужен класс? Почему бы этим не заняться какому-то отдельному классу типа thread pool или std::async.
и ничего удалять не надо. Это сообщение отредактировал(а) azesmcar - 17.12.2010, 07:52 |
||||||
|
|||||||
boostcoder |
|
||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это невозможно.... а можно каким-либо образом сделать проверку на стеке или в куче был создан объект?
к нему никто не обращается. только сам объект вызывает полученный в конструктор функциональный объект. у объекта есть собственные данные.. std::async() поддерживает move semantic? Добавлено через 4 минуты и 46 секунд т.е. по идее, это:
должно решить проблему.. |
||||||
|
|||||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
каким образом обеспечивается невозможность?
![]() функтор+std::async В каком смысле? move чего?
|
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
мной ![]() угу |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Если состояние потока вообще не интересует, то можно так
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
![]() протупил. вопрос закрыт. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |