Eliding synchronization in a concurrent data structure

US9384063B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9384063-B2
Application numberUS-48694509-A
CountryUS
Kind codeB2
Filing dateJun 18, 2009
Priority dateJun 18, 2009
Publication dateJul 5, 2016
Grant dateJul 5, 2016

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 concurrent data structure allows synchronization to be elided for read accesses. Processing resources that remove one or more elements of the concurrent data structure are allowed to delete the elements only after all other processing resources have reached a safe point. Each processing resource maintains an indicator that indicates whether the processing resource has reached as safe point (i.e., will not access the concurrent data structure). When the indicators indicate that all processing resources have reached a safe point, elements of the data structure may be deleted.

First claim

Opening claim text (preview).

What is claimed is: 1. A computer readable storage medium storing computer-executable instructions that, when executed by a computer system, perform a method comprising: identifying an element present in a concurrent data structure for deletion; receiving an indicator from each of a set of processing resources that declares whether or not a corresponding processing resource will access the concurrent data structure that is accessible by the corresponding processing resource; determining whether or not a safe point has been reached in which the set of processing resources will not access the concurrent data structure based on the indicator from each of the set of processing resources; and allowing the element in the concurrent data structure to be deleted if the safe point has been reached. 2. The computer readable storage medium of claim 1 , the method further comprising: allowing a set of execution contexts executing on the set of processing resources to read the element without synchronization prior to deleting the element from the concurrent data structure. 3. The computer readable storage medium of claim 1 , the method further comprising: determining that each of the set of processing resources have reached the safe point using the indicator for each of the set of processing resources, a data version of the concurrent data structure, and a commit version of the concurrent data structure. 4. The computer readable storage medium of claim 1 , the method further comprising: determining that each of the set of processing resources have reached the safe point using the indicator for each of the set of processing resources including a respective virtual processor and a respective hardware thread. 5. The computer readable storage medium of claim 4 , the method further comprising: allocating the set of processing resources to a scheduler in a process executing on the computer system. 6. The computer readable storage medium of claim 1 , the method further comprising: configuring the concurrent data structure as a linked list of a set of arrays that include the element. 7. The computer-readable storage medium of claim 1 , the method further comprises receiving an indicator maintained by each of the set of processing resources. 8. The computer readable storage medium of claim 1 , the method further comprises allowing the element in the concurrent data structure to be deleted without invoking a lock. 9. A method performed in a process executing on a computer system, the method comprising: moving one of a set of elements of a concurrent data structure that is accessible by a set of processing resources of the computer system to a free element list; receiving a safe indicator from the free element list that declares whether or not a safe point has been reached to delete the one of the set of elements, wherein the safe point is a time that none of the set of processing resources will access the one of the set of elements; and deleting the one of the set of elements from the concurrent data structure after ensuring that each of the set of processing resources will not access a version of the concurrent data structure corresponding to the one of the set of elements—based on the safe indicator. 10. The method of claim 9 further comprising: allowing a set of execution contexts executing on the set of processing resources to access the one of the set of elements subsequent to moving the one of the set of elements to the free element list and prior to deleting the one of the set of elements. 11. The method of claim 9 further comprising: creating the concurrent data structure as a linked list of a set of arrays that include the element. 12. The method of claim 11 further comprising: setting the safe indicator corresponding to the one of the set of elements after ensuring that each of the set of processing resources will not access a version of the concurrent data structure corresponding to the one of the set of elements. 13. The method of claim 11 further comprising: moving one of the set of arrays to a list of arrays to be deleted; and removing the one of the set of arrays from the linked list after ensuring that each of the set of processing resources will not access the concurrent data structure. 14. The method of claim 11 further comprising: creating the concurrent data structure as the linked list of the set of arrays in which one of the set of arrays has a number of elements equal to a number of bits of a machine word of the computer system. 15. A computer readable storage medium storing computer-executable instructions that, when executed by a computer system, perform a method comprising: moving an element from a linked list of a set of arrays in a concurrent data structure to a free element list; receiving a safe indicator from the free element list that declares whether or not a safe point has been reached to delete the element, wherein the safe point is a time that none of a set of processing resources will access the element accessible by the set of processing resources; and deleting the element from the free element list if the safe indicator indicates that the safe point has been reached to delete the element. 16. The computer readable storage medium of claim 15 , the method further comprising: allowing a set of execution contexts executing on the set of processing resources to access the element from the free element list subsequent to moving the element to the free element list and prior to deleting the element. 17. The computer readable storage medium of claim 16 , the method further comprising: allowing the set of execution contexts executing on the set of processing resources, including a respective virtual processor and a respective hardware thread, to access the element. 18. The computer readable storage medium of claim 17 , the method further comprising: allocating the virtual processors to a scheduler in a process executing on the computer system; and executing the set of execution contexts with the virtual processors. 19. The computer readable storage medium of claim 18 , the method further comprising: executing a dispatch loop on each of the virtual processors; and setting the indicators with the dispatch loop.

Assignees

Inventors

Classifications

  • using versioning · CPC title

  • G06F9/52Primary

    Program synchronisation; Mutual exclusion, e.g. by means of semaphores · CPC title

  • Physics · mapped topic

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 US9384063B2 cover?
A concurrent data structure allows synchronization to be elided for read accesses. Processing resources that remove one or more elements of the concurrent data structure are allowed to delete the elements only after all other processing resources have reached a safe point. Each processing resource maintains an indicator that indicates whether the processing resource has reached as safe point (i…
Who is the assignee on this patent?
Ringseth Paul, Chu Michael L, Messmer William R, and 3 more
What technology area does this patent fall under?
Primary CPC classification G06F9/52. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 05 2016 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).