Changes between Version 4 and Version 5 of ru/DOM


Ignore:
Timestamp:
Feb 17, 2013, 4:44:25 AM (9 years ago)
Author:
vadim.godunko
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ru/DOM

    v4 v5  
    3333 - если последняя ссылка на DOM::Document тряется, но при этом остаются ссылки на дочерние узлы - документ частично разрушается. Пока не понятно как это преодолеть.
    3434
    35 ==== Альтернативный вариант ====
     35==== Альтернативный вариант 1 ====
    3636
    3737Альтернативный вариант заключается в том, что всегда используется счётчик ссылок документа для узлов, являющихся частью документа; либо счётчик ссылок корневого узла некоторого поддерева, не являющегося частью документа. При подключении поддерева к основному дереву документа значение счётчика ссылок документа увеличивается на значение счётчика ссылок корня поддерева, после чего значение счётчика ссылок корня поддерева сбрасывается. При отделении поддерева от документа необходимо как-то откорректировать значение счётчиков в противоположном порядке. Но не ясно как учитывать ссылки на элементы всего отделяемого поддерева.
     38
     39==== Альтернативный вариент 2 ====
     40
     41Необходимо подумать насколько разрешима задача отсоединения поддерева если использовать счётчик для учёта наличия родительского узла (как в начальном варианте), счётчик узла для подсчёта его ссылок и счётчик корневого узла (или документа) для удержания всего поддерева до потери последней ссылки.
     42
     43С точки зрения манипулирования поддеревьями видится возможным не очень эффективный вариант, когда получение ссылки на узел приводит к инкременту счётчика ссылок узла и всех родительских узлов. Тогда добавление/удаление поддерева будет заключаться в увеличении/уменьшении значений счётчиков всех родительских узлов добавленного/удаляемого узла на значение счётчика самого узла. Неэффективность кроется в затратах на обрабоку атомарных операций над большим количеством счётчиков.