ОДНОВРЕМЕННОЕ ИСПОЛЬЗОВАНИЕ ДОКУМЕНТА НЕСКОЛЬКИМИ ПОТОКАМИ

1. Способ для выполнения операций в отношении документа, содержащий этапы, на которых:
предоставляют вычислительную систему, которая содержит один или несколько блоков обработки и запоминающее устройство;
выполняют с помощью вычислительной системы поток-конструктор, который изменяет документ путем изменения активного представления документа, причем активное представление документа сохранено в запоминающем устройстве; и
выполняют с помощью вычислительной системы поток-считыватель одновременно с потоком-конструктором, причем поток-считыватель выполняет операцию в отношении документа, используя неактивное представление документа, неактивное представление документа сохранено в запоминающем устройстве, активное представление документа и неактивное представление документа не включают в себя разные копии одних и тех же данных в запоминающем устройстве, где при считывании данных в неактивном представлении документа логическая связность обеспечивается без блокирования каких-либо данных в неактивном представлении документа.
2. Способ по п. 1,
в котором операция, выполненная потоком-считывателем, не изменяет документ;
в котором поток-конструктор выполняет операцию, которая создает новое представление документа каждый раз, когда поток-конструктор принимает ввод для изменения документа; и
в котором после того, как поток-конструктор завершает операцию, новое представление документа доступно для использования потоком-считывателем.
3. Способ по п. 1,
в котором документ является документом текстового процессора; и
где способ дополнительно содержит этап, на котором: выполняют с помощью вычислительной системы приложение - текстовый процессор, которое дает возможность пользователю взаимодействовать с документом, причем приложение - текстовый процессор инициирует поток-конструктор и поток-считыватель.
4. Способ по п. 1,
в котором документ внутренне представлен в виде дерева документа, причем дерево документа является иерархией элементов документа;
в котором активное представление документа включает в себя реальный массив элементов, который содержит элементы, которые представляют каждый элемент документа в дереве документа;
в котором неактивное представление документа включает в себя реальный массив элементов; и
в котором активное представление документа и неактивное представление документа не включают в себя разные копии в запоминающем устройстве одних и тех же элементов в реальном массиве элементов.
5. Способ по п. 4, в котором поток-конструктор удаляет заданный элемент из активного представления документа, в то время как поток-считыватель одновременно считывает заданный элемент из неактивного представления документа, причем заданный элемент представляет один и тот же элемент документа в дереве документа.
6. Способ по п. 4,
в котором активное представление документа включает в себя активную версию дерева индексов и активную версию таблицы дескрипторов фрагментов, причем таблица дескрипторов фрагментов содержит набор дескрипторов фрагментов, каждый из дескрипторов фрагментов идентифицирует фрагмент реального массива элементов, дерево индексов содержит иерархию индексных узлов, каждый из индексных узлов указывает один из дескрипторов фрагментов;
в котором неактивное представление документа включает в себя неактивную версию дерева индексов и неактивную версию таблицы дескрипторов фрагментов;
в котором для каждого индексного узла в дереве индексов элементы, ассоциированные с индексными узлами в левом поддереве индексного узла, имеют виртуальные смещения, которые меньше виртуальных смещений элементов, ассоциированных с индексным узлом, элементы, ассоциированные с индексными узлами в правом поддереве индексного узла, имеют виртуальные смещения, которые больше виртуальных смещений элементов, ассоциированных с индексным узлом, причем виртуальные смещения являются смещениями от начала виртуального массива элементов, виртуальный массив элементов является одномерным представлением дерева документа; и
в котором активное представление документа и неактивное представление документа не содержат в запоминающем устройстве разные копии одних и тех же дескрипторов фрагментов в таблице дескрипторов фрагментов или одних и тех же индексных узлов в дереве индексов.
7. Способ по п. 6,
в котором для того, чтобы изменить документ для включения в него дополнительного элемента документа, поток-конструктор выполняет операцию вставки элемента, которая формирует активное представление документа путем вставки одного или нескольких новых элементов в реальный массив элементов, добавления нового дескриптора фрагмента в таблицу дескрипторов фрагментов и добавления одного или нескольких новых индексных узлов к дереву индексов, причем один или несколько новых элементов представляют дополнительный элемент документа;
в котором после того, как поток-конструктор завершает операцию вставки элемента, активное представление документа становится доступным для использования потоком-считывателем.
8. Вычислительная система, содержащая:
систему обработки, содержащую множество блоков обработки; и
запоминающее устройство, которое содержит исполняемые компьютером команды, которые при исполнении системой обработки заставляют вычислительную систему:
выполнять поток-конструктор, который изменяет документ путем изменения активного представления документа, причем активное представление документа сохранено в запоминающем устройстве; и
выполнять поток-считыватель одновременно с потоком-конструктором, причем поток-считыватель выполняет операцию в отношении документа, используя неактивное представление документа, неактивное представление документа сохранено в запоминающем устройстве, активное представление документа и неактивное представление документа не включают в себя разные копии одних и тех же данных в запоминающем устройстве, где при считывании данных в неактивном представлении документа логическая связность обеспечивается без блокирования каких-либо данных в неактивном представлении документа, причем операция потока-считывателя не изменяет документ.
9. Вычислительная система по п. 8,
в которой документ внутренне представлен в виде дерева документа, причем дерево документа является иерархией элементов документа;
в которой активное представление документа включает в себя реальный массив элементов, который содержит элементы, которые представляют каждый элемент документа в дереве документа;
в которой неактивное представление документа включает в себя реальный массив элементов,
в которой активное представление документа и неактивное представление документа не включают в себя разные копии в запоминающем устройстве одних и тех же элементов в реальном массиве элементов;
в которой активное представление документа включает в себя активную версию дерева индексов и активную версию таблицы дескрипторов фрагментов, причем таблица дескрипторов фрагментов содержит набор дескрипторов фрагментов, каждый из дескрипторов фрагментов идентифицирует фрагмент реального массива элементов, дерево индексов содержит иерархию индексных узлов, каждый из индексных узлов указывает один из дескрипторов фрагментов;
в которой неактивное представление документа включает в себя неактивную версию дерева индексов и неактивную версию таблицы дескрипторов фрагментов;
в которой для каждого индексного узла в дереве индексов элементы, ассоциированные с индексными узлами в левом поддереве индексного узла, имеют виртуальные смещения, которые меньше виртуальных смещений элементов, ассоциированных с индексным узлом, элементы, ассоциированные с индексными узлами в правом поддереве индексного узла, имеют виртуальные смещения, которые больше виртуальных смещений элементов, ассоциированных с индексным узлом, причем виртуальные смещения являются смещениями от начала виртуального массива элементов, виртуальный массив элементов является одномерным представлением дерева документа; и
в которой активное представление документа и неактивное представление документа не содержат в запоминающем устройстве разные копии одних и тех же дескрипторов фрагментов в таблице дескрипторов фрагментов или одних и тех же индексных узлов в дереве индексов.
10. Носитель информации, который хранит машиночитаемые команды, которые при исполнении заставляют вычислительную систему:
выполнять приложение, которое дает пользователю возможность взаимодействовать с документом, причем документ внутренне представлен в виде дерева документа, дерево документа содержит иерархию элементов документа, приложение инициирует поток-конструктор и поток-считыватель;
выполнять поток-конструктор, причем поток-конструктор изменяет документ путем изменения активного представления документа, активное представление документа сохранено в запоминающем устройстве, активное представление документа включает в себя активную версию дерева индексов, активную версию таблицы дескрипторов фрагментов и реальный массив элементов, реальный массив элементов содержит элементы, которые представляют каждый элемент документа в дереве документа, таблица дескрипторов фрагментов содержит набор дескрипторов фрагментов, каждый из дескрипторов фрагментов идентифицирует фрагмент реального массива элементов, дерево индексов содержит иерархию индексных узлов, каждый из индексных узлов указывает один из дескрипторов фрагментов; и
выполнять поток-считыватель одновременно с потоком-конструктором, причем поток-считыватель выполняет операцию в отношении документа, используя неактивное представление документа, неактивное представление документа включает в себя неактивную версию дерева индексов, неактивную версию таблицы дескрипторов фрагментов и реальный массив элементов, неактивное представление документа сохранено в запоминающем устройстве, активное представление документа и неактивное представление документа не включают в себя разные копии одних и тех же данных в запоминающем устройстве, где при считывании данных в неактивном представлении документа логическая связность обеспечивается без блокирования каких-либо данных в неактивном представлении документа, причем операция потока-считывателя не изменяет документ,
в котором для каждого индексного узла в дереве индексов элементы, ассоциированные с индексными узлами в левом поддереве индексного узла, имеют виртуальные смещения, которые меньше виртуальных смещений элементов, ассоциированных с индексным узлом, а элементы, ассоциированные с индексными узлами в правом поддереве индексного узла, имеют виртуальные смещения, которые больше виртуальных смещений элементов, ассоциированных с индексным узлом, причем виртуальные смещения являются смещениями от начала виртуального массива элементов, виртуальный массив элементов является одномерным представлением дерева документа.