crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Умные указатели через сигналы.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 3.11.2015, 12:39
 
Цитата
Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0.
Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ...

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

Только он увеличивает счетчик при копировании, а при удалении уменьшает и удаляет объект когда он становится равным 0.
JohnZ Дата 9.10.2015, 20:14
 
Цитата(call_me_Frank @ 5.10.2015, 17:07) *
Добрый день, всем-всем.

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

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

Я не матёрый, и не совсем профи, :) но ... Количество получателей известно ?
Если да, то в структуру добавляется поле short, которое перед запуском сигнала == 0.
Каждый обработчик делает ему инкремент, и по достижении заданного числа обработок, т.е. последний обработчик, удаляет структуру, как-то так ...
Iron Bug Дата 6.10.2015, 8:41
  обычный shared_ptr подойдёт.
вопрос не относится к Qt, переношу его в вопросы по С++.
call_me_Frank Дата 5.10.2015, 17:07
  Добрый день, всем-всем.

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

Я пока что :rolleyes: не имел сколько-нибудь серьезного дела с умными указателями, но вроде ж они для этого созданы? Нужен совет матерого профи по указанной задаче ))
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 0:21