Changes between Version 4 and Version 5 of ru/DOM
- Timestamp:
- Feb 17, 2013, 4:44:25 AM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ru/DOM
v4 v5 33 33 - если последняя ссылка на DOM::Document тряется, но при этом остаются ссылки на дочерние узлы - документ частично разрушается. Пока не понятно как это преодолеть. 34 34 35 ==== Альтернативный вариант ====35 ==== Альтернативный вариант 1 ==== 36 36 37 37 Альтернативный вариант заключается в том, что всегда используется счётчик ссылок документа для узлов, являющихся частью документа; либо счётчик ссылок корневого узла некоторого поддерева, не являющегося частью документа. При подключении поддерева к основному дереву документа значение счётчика ссылок документа увеличивается на значение счётчика ссылок корня поддерева, после чего значение счётчика ссылок корня поддерева сбрасывается. При отделении поддерева от документа необходимо как-то откорректировать значение счётчиков в противоположном порядке. Но не ясно как учитывать ссылки на элементы всего отделяемого поддерева. 38 39 ==== Альтернативный вариент 2 ==== 40 41 Необходимо подумать насколько разрешима задача отсоединения поддерева если использовать счётчик для учёта наличия родительского узла (как в начальном варианте), счётчик узла для подсчёта его ссылок и счётчик корневого узла (или документа) для удержания всего поддерева до потери последней ссылки. 42 43 С точки зрения манипулирования поддеревьями видится возможным не очень эффективный вариант, когда получение ссылки на узел приводит к инкременту счётчика ссылок узла и всех родительских узлов. Тогда добавление/удаление поддерева будет заключаться в увеличении/уменьшении значений счётчиков всех родительских узлов добавленного/удаляемого узла на значение счётчика самого узла. Неэффективность кроется в затратах на обрабоку атомарных операций над большим количеством счётчиков.