Название: Статистика shared Отправлено: Igors от Апрель 25, 2012, 14:13 Добрый день
Меня вполне устраивает любое shared (хоть implicit), но нередко я не хочу или не могу пускать дело на самотек, надеясь что объект когда-нибудь да удалится. Нужно/хотелось бы иметь ф-цию печатающую статистику, примерно так Цитировать MyClass objects 10 // всего сейчвс 10 экземпляров MyClass Т.е. по каждому экземпляру - кол-во ссылающихся и их адреса. Ну + какая-то информация об экземпляре (напр имя имеджа)[ 0 ] "Image1.png", 4 referenced (0xabcd1234, 0xabcd1238...) ... [ 9 ] "ImageXXX.png", 1 referenced (0xabcd1234) Как это сделать? Помогут ли "умные указатели" - или они не так уж умны? :) Спасибо Название: Re: Статистика shared Отправлено: Akon от Апрель 25, 2012, 14:57 Т.е. нужно добраться до счетчика ссылок, а-ля boost::shared_ptr<T>::use_count()?
Нужно посмотреть сорцы кьютейных классов - может быть имеется какой-нибудь паблик доступ. Название: Re: Статистика shared Отправлено: Igors от Апрель 25, 2012, 18:08 Т.е. нужно добраться до счетчика ссылок, а-ля boost::shared_ptr<T>::use_count()? Отсутствует, не вижу даже как получить счетчик ссылок. Не говоря уже о том что его недостаточно, надо знать ссылающихся (кто держит).Нужно посмотреть сорцы кьютейных классов - может быть имеется какой-нибудь паблик доступ. Конечно средствами языка это сделать не так уж сложно, но как же так: и то хорошее, и это мощное - а чуть более сложная задача - и что, "даешь велосипед"? Получается что расширяемость всех тех прибамбасов нулевая? Как-то не по-хозяйски :'( Название: Re: Статистика shared Отправлено: navrocky от Апрель 25, 2012, 23:33 Ссылающихся ты точно не получишь, а счетчик можно вытянуть при желании. Для тебя единственный подходящий вариант - пропатчить Qt под свои нужды.
Название: Re: Статистика shared Отправлено: Igors от Апрель 26, 2012, 10:31 Ссылающихся ты точно не получишь, а счетчик можно вытянуть при желании. Для тебя единственный подходящий вариант - пропатчить Qt под свои нужды. А как Вы себе это представляете? В смысле как в итоге должен выглядеть пропатченый класс(ы) (и какие?) чтобы я мог получить ссылающихся?Название: Re: Статистика shared Отправлено: Akon от Апрель 26, 2012, 13:03 Малоинвазивное решение: добавьте в счетчик коллбеки с необходимой информацией на attach/detach. На этом патчинг Qt закончен. Далее в коллбеках (пользовательский код) делайте, что угодно, в частности, ведите учет клиентов шареных данных.
Название: Re: Статистика shared Отправлено: Igors от Апрель 27, 2012, 16:57 Малоинвазивное решение: добавьте в счетчик коллбеки с необходимой информацией на attach/detach. На этом патчинг Qt закончен. Далее в коллбеках (пользовательский код) делайте, что угодно, в частности, ведите учет клиентов шареных данных. Конечно хотелось бы использовать уже имеющиеся классы, но это не самоцель. Я бы хотел крутить примерно так (псевдокод)Код Т.е. не просто мельтешить с тем shared (в целях обучения программированию) а по делу Название: Re: Статистика shared Отправлено: navrocky от Апрель 27, 2012, 17:10 Т.е. поиск подвисших кутэшных шаренных объектов в существующем коде не ваша цель?
Тогда что вам мешает сделать такую обвертку? Название: Re: Статистика shared Отправлено: Igors от Апрель 27, 2012, 17:32 Т.е. поиск подвисших кутэшных шаренных объектов в существующем коде не ваша цель? Пока не вижу как использовать "кутэшные шаренные" - необходимость что-то патчить уже достаточно неприятна, да и решается лишь одна, частная задачаТогда что вам мешает сделать такую обвертку? Ничто, просто хочу посоветоваться с людями :) |