Умные указатели через сигналы. |
Здравствуйте, гость ( Вход | Регистрация )
Умные указатели через сигналы. |
call_me_Frank |
5.10.2015, 17:07
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 20.10.2010 Пользователь №: 2129 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день, всем-всем.
У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена? Я пока что не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче )) |
|
|
Iron Bug |
6.10.2015, 8:41
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
обычный shared_ptr подойдёт.
вопрос не относится к Qt, переношу его в вопросы по С++. |
|
|
JohnZ |
9.10.2015, 20:14
Сообщение
#3
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Добрый день, всем-всем. У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена? Я пока что не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче )) Я не матёрый, и не совсем профи, но ... Количество получателей известно ? Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0. Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ... Сообщение отредактировал JohnZ - 9.10.2015, 20:15 |
|
|
lanz |
3.11.2015, 12:39
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0. Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ... Так и работает shared_ptr Только он увеличивает счетчик при копировании, а при удалении уменьшает и удаляет объект когда он становится равным 0. |
|
|
Текстовая версия | Сейчас: 4.12.2024, 12:02 |