Efficiency sequencer for multiple concurrently-executing threads of execution
US-2017123861-A1 · May 4, 2017 · US
US10423464B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10423464-B2 |
| Application number | US-201615333820-A |
| Country | US |
| Kind code | B2 |
| Filing date | Oct 25, 2016 |
| Priority date | Sep 30, 2016 |
| Publication date | Sep 24, 2019 |
| Grant date | Sep 24, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
In one example in accordance with the present disclosure, a method may include performing a transactional operation such that if one step of the transactional operation is performed, each other step of the transactional operation is performed. The transactional operation may include making a first copy, stored in a first persistent memory, of a next ticket number stored in a second persistent memory and updating the next ticket number in the second persistent memory. The method may also include determining when to serve a first thread based on the first copy of the next ticket number.
Opening claim text (preview).
The invention claimed is: 1. A method, comprising: performing a transactional operation, such that if one step of the transactional operation is performed, each other step of the transactional operation is performed, wherein the transactional operation includes: making a first copy, stored in a first persistent memory, of a next ticket number adjacent to a next ticket owner stored in a second persistent memory; updating the next ticket number and the next ticket owner in the second persistent memory with a double word compare-and-swap-operation; and determining when to serve a first thread based on the first copy of the next ticket number and the next ticket owner, wherein the next ticket number and the next ticket owner are global variables shared by each thread using a persistent ticket lock in the first persistent memory and in the second persistent memory. 2. The method of claim 1 wherein performing the transactional operation further comprises: blocking, using the persistent ticket lock, the next ticket number from being updated by threads other than the first thread; and unblocking the next ticket number from being updated by threads other than the first thread. 3. The method of claim 2 wherein an atomic operation is used to update the next ticket number and to perform one of blocking the next ticket number, and unblocking the next ticket number. 4. The method of claim 3 wherein the atomic operation is a double word compare-and-swap operation. 5. The method of claim 3 wherein the atomic operation is a double word atomic store operation. 6. The method of claim 2 wherein blocking the next ticket number from threads other than the first thread comprises setting the next ticket owner to a number associated with the first thread. 7. The method of claim 2 comprising: determining that the first thread is recovering from a crash incident; determining that the next ticket number is blocked from being updated by threads other than the first thread; making a second copy of the next ticket number; and unblocking the next ticket number. 8. The method of claim 2 , wherein the determining when to serve the first thread is also based on a now serving ticket number, the method comprising: requesting to release a ticket lock; and updating the now serving ticket number. 9. The method of claim 8 further comprising: determining that the now serving ticket number is equal to the first copy of the next ticket number; and determining to serve the first thread. 10. A system comprising: a first persistent memory; a second persistent memory; a processor to: make a copy, stored in a first persistent memory, of a next ticket number adjacent to a next ticket owner for a first thread, wherein the next ticket number is a global variable shared by each thread using a persistent ticket lock in the first persistent memory and in the second persistent memory stored in a second persistent memory, and update the next ticket number and the next ticket owner in the second persistent memory with a double word compare and swap operation; and a ticket server to determine when the copy matches a now serving ticket number. 11. The system of claim 10 wherein the processor blocks the next ticket number from being updated by threads other than the first thread and unblocks the next ticket number from being updated by threads other than the first thread. 12. The system of claim 11 wherein a single atomic operation is used both to update the next ticket number and to perform one of blocking the next ticket number and unblocking the next ticket number. 13. The system of claim 11 wherein blocking the next ticket number by the first thread comprises setting the next ticket owner to a number associated with the first thread. 14. The system of claim 11 comprising: a second processor to: determine that the first thread is recovering from a crash incident; determine that the next ticket number is blocked from being updated by threads other than the first thread; make a second copy of the next ticket number; and unblock the next ticket number. 15. A non-transitory machine-readable storage medium configured to store instructions which, when executed by a processor, cause a system to perform a method comprising: blocking, using a persistent ticket lock, a next ticket number from being updated by threads other than a first thread, wherein the next ticket number is a global variable shared by each thread accessing a first persistent memory and a second persistent memory; and performing a transactional operation, such that if one step of the transactional operation is performed, each other step of the transactional operation is performed, wherein the transactional operation includes: making a first copy, stored in the first persistent memory, of the next ticket number stored adjacent to a next ticket owner in the second persistent memory, and updating the next ticket number and the next ticket owner in the second persistent memory with a double word compare-and-swap operation; and determining when to serve the first thread based on the first copy of the next ticket number and the next ticket owner, wherein the next ticket number and the next ticket owner are global variables shared by each thread using a persistent ticket lock in the first persistent memory and in the second persistent memory. 16. The non-transitory machine-readable storage medium of claim 15 , wherein the method further includes: setting a next ticket owner variable to a number associated with the first thread as part of blocking the next ticket number from being updated by threads other than the first thread. 17. The non-transitory machine-readable storage medium of claim 15 wherein, in the method, blocking the next ticket number from being updated by threads other than the first thread is performed as part of performing the transactional operation. 18. The non-transitory machine-readable storage medium of claim 15 wherein, in the method, a single atomic operation is used to update the next ticket number and perform one of blocking the next ticket number from being accessed by threads other than the first thread and unblocking the next ticket number from being accessed by threads other than the first thread. 19. The non-transitory machine-readable storage medium of claim 15 , wherein, the method further comprises: determining that the first thread is recovering from a crash incident; determining that the next ticket number is blocked from being updated by threads other than the first thread; making a second copy of the next ticket number; and unblocking the next ticket number from being updated by threads other than the first thread. 20. The non-transitory machine-readable storage medium of claim 15 , wherein, in the method, determining when to serve the first thread is also based on a now serving ticket number and wherein the method further includes: requesting to release the persistent ticket lock; and updating the now serving ticket number.
Transaction processing · CPC title
Thread control instructions · CPC title
Program synchronisation; Mutual exclusion, e.g. by means of semaphores · CPC title
Multiprogramming arrangements · CPC title
Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence) · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.