Здравствуйте, SaZ, Вы писали:
SaZ>Здравствуйте, c-smile, Вы писали:
CS>>Там больше проблемы не циклическим dispatching по существу (который тоже есть как проблема), а с ownership ибо QObject это refcounted штука.
CS>>Т.е. замкнутая цепочка slot subscribers может быть неудаляемой обычным способом.
CS>>Но это собственно не Qt проблема, а общая для refcounted систем.
SaZ>А подробнее можно? Что такое замкнутая цепочка подписчиков? Типа объект А подписан на Б, Б подписан на А? С удалением таких вещей в Qt проблем нет.
Помнится на заре моего использования Qt этот самый QObject использовал обычный refcount.
Сейчас ситуация явно изменилась как я увидел из этой ветки, спасибо всем отписавшимся — узнал что-то новое — и это здорово.
На самом деле вся инфраструктура QObject как оказалось еще более навороченна (тяжела?) чем представлялось.
У каждого QObject есть еще
QObjectData. Т.е. дополнительная косвенность обращений.
А каждый QPointer содержит в себе QWeakPointer который уже есть
refcounter штука
В то же самое время HTML DOM это direct parent-child tree:
class node : refcounted_resource {
element* parent;
uint index; // in parent children collection
}
class element: node {
vector<handle<node>> children;
}
Т.е. построено на прямых pointers — более легковесное.