Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Умные указатели через сигналы.
Форум на CrossPlatform.RU > Разработка > С\С++
call_me_Frank
Добрый день, всем-всем.

У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена?

Я пока что :rolleyes: не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче ))
Iron Bug
обычный shared_ptr подойдёт.
вопрос не относится к Qt, переношу его в вопросы по С++.
JohnZ
Цитата(call_me_Frank @ 5.10.2015, 17:07) *
Добрый день, всем-всем.

У меня задача такая: один объект испускает сигнал с указателем на структуру данных SD. У него, допустим, есть десяток получателей, которые могут использовать данные структуры, а могут не использовать. Сколько времени потребуется конкретному получателю на обработку полученных данных - не известно. Но после того, как структуру данных "посмотрели" все получатели, SD должна быть удалена. как это реализовать? и как можно быть уверенным, что все структуры в итоге удалены и память очищена?

Я пока что :rolleyes: не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче ))

Я не матёрый, и не совсем профи, :) но ... Количество получателей известно ?
Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0.
Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ...
lanz
Цитата
Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0.
Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ...

Так и работает shared_ptr :lol:

Только он увеличивает счетчик при копировании, а при удалении уменьшает и удаляет объект когда он становится равным 0.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.