Здравствуйте, гость ( Вход | Регистрация )
lanz | Дата 3.11.2015, 12:39 |
Цитата Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0. Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ... Так и работает shared_ptr Только он увеличивает счетчик при копировании, а при удалении уменьшает и удаляет объект когда он становится равным 0. |
|
JohnZ | Дата 9.10.2015, 20:14 |
Добрый день, всем-всем. У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена? Я пока что не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче )) Я не матёрый, и не совсем профи, но ... Количество получателей известно ? Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0. Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ... |
|
Iron Bug | Дата 6.10.2015, 8:41 |
обычный shared_ptr подойдёт. вопрос не относится к Qt, переношу его в вопросы по С++. |
|
call_me_Frank | Дата 5.10.2015, 17:07 |
Добрый день, всем-всем. У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена? Я пока что не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче )) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 9:28 |