Concurrent utilization of a document by multiple threads

US9652440B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9652440-B2
Application numberUS-78880410-A
CountryUS
Kind codeB2
Filing dateMay 27, 2010
Priority dateMay 27, 2010
Publication dateMay 16, 2017
Grant dateMay 16, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A computing system concurrently executes a builder thread and a reader thread. The builder thread modifies a document by modifying an active representation of the document. The reader thread perform operations regarding the document using a non-active representation of the document. The active representation of the document and the non-active representation of the document are stored in a memory of the computing system. The active representation of the document and the non-active representation of the document do not include different copies in the memory of the same data. When reading data in the non-active representation of the document, logical consistency is ensured without locking any data in the non-active representation of the document.

First claim

Opening claim text (preview).

I claim: 1. A method comprising: providing a non-active representation of a document, the non-active representation of the document comprising a piece descriptor and a piece descriptor index; executing, by a computing system, a builder thread to input or modify an element in the document, the builder thread creating a new piece descriptor for indicating a position where the element belongs in the document, the new piece descriptor and the piece descriptor index forming an active representation of the document, wherein the active representation of the document and the non-active representation of the document refer to the same data stored in memory; providing access to the non-active representation for use by a reader thread while the builder thread modifies the active representation of the document; after the builder thread modifies the document, updating the non-active representation of the document with the active representation of the document, such that modifications to the element at the position indicated by the new piece descriptor replaces a corresponding element at the position indicated by the piece descriptor in the non-active representation of the document; and after updating the non-active representation, providing access to the non-active representation of the document including the modifications to the element. 2. The method of claim 1 , wherein the operation performed by the reader thread does not modify the document. 3. The method of claim 2 , wherein the builder thread performs an operation that creates a new representation of the document each time the builder thread receives input to modify the document; and wherein after the builder thread completes the operation, the new representation of the document is available for use by the reader thread. 4. The method of claim 1 , further comprising executing, by the computing system, another reader thread concurrently with the reader thread and the builder thread, the other reader thread performing another operation regarding the document using the non-active representation of the document. 5. The method of claim 1 , further comprising: executing, by the computing system, an application that enables a user to interact with the document, the application waking the builder thread and the reader thread. 6. The method of claim 5 , wherein the application is a word processing application and the document is a word processor document; and wherein the operation performed by the reader thread is a spell check operation. 7. The method of claim 1 , wherein the document is internally represented as a document tree, the document tree being a hierarchy of document elements; wherein the active representation of the document includes a real element array that contains elements that represent each document element in the document tree; wherein the non-active representation of the document includes the real element array; wherein the active representation of the document and the non-active representation of the document do not include different copies in the memory of the same elements in the real element array. 8. The method of claim 7 , wherein the builder thread removes a given element from the active representation of the document while concurrently the reader thread reads the given element from the non-active representation of the document, the given element representing the same document element in the document tree. 9. The method of claim 7 , wherein the active representation of the document includes an active version of an index tree and an active version of a piece descriptor table, the piece descriptor table comprising a set of piece descriptors, each of the piece descriptors identifying a piece of the real element array, the index tree comprising a hierarchy of index nodes, each of the index nodes indicating one of the piece descriptors; wherein the non-active representation of the document includes a non-active version of the index tree and a non-active version of the piece descriptor table; wherein for each index node in the index tree, elements associated with index nodes in a left subtree of the index node have virtual offsets that are less than virtual offsets of elements associated with the index node and elements associated with index nodes in a right subtree of the index node have virtual offsets that are greater than the virtual offsets of the elements associated with the index node, the virtual offsets being offsets from a beginning of a virtual element array, the virtual element array being a one-dimension representation of the document tree; wherein the active representation of the document and the non-active representation of the document do not have in the memory different copies of the same piece descriptors in the piece descriptor table or the same index nodes in the index tree. 10. The method of claim 9 , wherein data in the index nodes in the non-active version of the index tree and data in the non-active version of the piece descriptor table do not change. 11. The method of claim 9 , wherein to modify the document to include an additional document element, the builder thread performs an element insertion operation that generates the active representation of the document by inserting one or more new elements into the real element array, adding a new piece descriptor to the piece descriptor table, and adding one or more new index nodes to the index tree, the one or more new elements representing the additional document element; wherein after the builder thread completes the element insertion operation, the active representation of the document becomes available for use by the reader thread. 12. The method of claim 1 , wherein parts of the document within the active representation of the document and the non-active representation of the document that are the same refer to a same copy of the data. 13. A computing system comprising: a processing system comprising a plurality of processing units; and a memory that comprises computer executable instructions that, when executed by the processing system, cause the computing system to: provide a non-active representation of a document, the non-active representation of the document comprising a piece descriptor and a piece descriptor index; execute a builder thread that modifies an element in a document by modifying an active representation of the document, the builder thread creating a new piece descriptor to indicate a position where the element belongs in the document, the new piece descriptor and the piece descriptor index forming an active representation of the document, wherein the active representation of the document and the non-active representation of the document refer to the same data stored in memory; provide access to the non-active representation for use by a reader thread while the builder thread modifies the active representation of the document; update the non-active representation of the document with the active representation of the document, such that modifications to the element at the position indicated by the new piece descriptor replaces a corresponding element at the position indicated by the piece descriptor in the non-active representation of the document; and after updating the non-active representation, providing access to the non-active representation of the document including the modifications to the element. 14. The computing system of claim 13 , wherein the builder thread performs an operation that generates a new active representation of the document each time the builder thread receives input to modify the document; and wherein after the builder thread comp

Assignees

Inventors

Classifications

  • G06F16/322Primary

    Trees · CPC title

  • Collaborative creation, e.g. joint development of products or services · CPC title

  • G06F40/14Primary

    Tree-structured documents (parsing G06F40/205; validation G06F40/226) · CPC title

  • Concurrency control (transaction processing G06F9/466) · CPC title

  • Version control (for software G06F8/71) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9652440B2 cover?
A computing system concurrently executes a builder thread and a reader thread. The builder thread modifies a document by modifying an active representation of the document. The reader thread perform operations regarding the document using a non-active representation of the document. The active representation of the document and the non-active representation of the document are stored in a memor…
Who is the assignee on this patent?
Parker Charles W, Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F16/322. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 16 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).