IP Library Granted Patent US 10,013,235
Granted Patent B2
US 10,013,235 · App. 14/786,080 · Granted Jul 3, 2018

Method and system for queuing data for multiple readers and writers

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,013,235
App. No.
14/786,080
Granted
Jul 3, 2018
Kind
B2
Abstract

Systems and methods of queuing data for multiple readers and writers are provided. Enqueuing operations are disclosed that can process write functionality and can determine whether ring buffers have potentially filled, and dynamically declare a new ring buffer at a multiple of capacity of the current ring. Dequeuing operations are disclosed that can process read functionality for advancing control and determining whether and when to free ring buffers from memory.

Claims (42)

1. A computer-implemented method of allocating a ring buffer, the method comprising:

sequentially storing data with a first set of values in a first ring buffer comprising x elements, wherein x is a positive integer greater than two;

determining that the first ring buffer is full because a first element of the first ring buffer and a last element of the first ring buffer have wrapped upon each other;

allocating a second ring buffer, wherein the second ring buffer contains at least x+1elements; and

sequentially storing data with a second set of values in one or more elements of the second ring buffer, wherein write operations are performed on elements of the second ring buffer because the last element of the first ring buffer is occupied by a value, and wherein reading operations are performed on the first set of values in the first ring buffer concurrently with or subsequently to the write operations being performed on the second set of values in the ring buffer.

2. The method of claim 1 , wherein, provided that x>3, the second ring buffer contains a quantity of elements equal to x times y, wherein y=2 or a positive multiple of 2.

3. The method of claim 1 , wherein added write operations are blocked to the first ring buffer.

4. The method of claim 1 , wherein a fill pointer in a queue is directed from the first ring buffer to the second ring buffer.

5. The method of claim 1 , wherein a current element is determined by performing a modulo operation wherein the numerator is derived from a value in an index field and the divisor equals x.

6. The method of claim 5 , wherein the current element represents a logical position corresponding to a value in an index field.

7. The method of claim 6 , wherein the first ring buffer is determined to be in a wrapped condition upon detecting that a logical position of a current element maps to a physical position of an element in the first ring buffer that is already occupied by a value.

8. The method of claim 1 , wherein the first ring buffer and second ring buffer are associated in a linked list data structure.

9. A computer-implemented method of deallocating a ring buffer, the method comprising:

storing a queue comprising at least one pointer;

sequentially storing data with a first set of values in a first ring buffer comprising x elements, wherein x is a positive integer greater than two;

determining that the first ring buffer is full because a first element of the first ring buffer and a last element of the first ring buffer have wrapped upon each other;

allocating a second ring buffer, wherein the second ring buffer contains at least x+1elements; and

sequentially storing data with a second set of values in one or more elements of the second ring buffer, wherein write operations are performed on an element of the second ring buffer because the last element of the first ring buffer is occupied by a value, and wherein reading operations are performed on the first set of values in the first ring buffer concurrently with or subsequently to the write operations being performed on the second set of values in the ring buffer;

determining that the first ring buffer is empty based on a head pointer being associated with the first ring buffer, and a drain pointer being associated with the second ring buffer; and

deallocating the first ring buffer.

10. The method of claim 9 , wherein it is identified that there is one reader and no writer, and, in the computing environment being used, at least some manual memory management is required for handling deallocation of a ring buffer.

11. A computer-implemented method of deallocating a ring buffer, the method comprising:

storing a first ring buffer having a plurality of elements;

sequentially storing data with a first set of values in a first ring buffer comprising x elements, wherein x is a positive integer greater than two;

determining that the first ring buffer is full because a first element of the first ring buffer and a last element of the first ring buffer have wrapped upon each other;

allocating a second ring buffer, wherein the second ring buffer contains at least x+1elements;

sequentially storing data with a second set of values in one or more elements of the second ring buffer, wherein write operations are performed on elements of the second ring buffer because the last element of the first ring buffer is occupied by a value, and wherein reading operations are performed on the first set of values in the first ring buffer concurrently with or subsequently to the write operations being performed on the second set of values in the ring buffer;

storing, in a local field, values corresponding to a current front element of the first ring buffer and an end element in the first ring buffer;

determining that the first ring buffer is empty because the first ring buffer either:

is not blocked and is not wrapped, or

the first ring buffer is blocked and the value of the current front element is not in a position corresponding to the end element; and

deallocating the first ring buffer.

12. A computer-implemented method of storing a queue, the queue associated with at least one ring buffer, the method comprising:

storing at least one queue attribute that points to at least one attribute of a first ring buffer, wherein the at least one queue attribute includes one or more of:

a head pointer,

a drain pointer,

a value corresponding to a quantity of readers, or

a value corresponding to a quantity of writers;

sequentially storing data with a first set of values in the first ring buffer; and

sequentially storing data with a second set of values in one or more elements of a second ring buffer, wherein write operations are performed on elements of the second ring buffer because the last element of the first ring buffer is occupied by a value, and wherein reading operations are performed on the first set of values in the first ring buffer concurrently with or subsequently to the write operations being performed on the second set of values in the ring buffer.

13. The method of claim 12 , wherein a second ring buffer is allocated in response to a determination that the first ring buffer is full, and a first queue attribute is caused to point to the first ring buffer and a second queue attribute is caused to point to the second ring buffer.

14. The method of claim 12 , wherein in the computing environment being used at least some degree of manual memory management is required for handling deallocation of a ring buffer, and further wherein one pointer corresponds to a quantity of readers, and one pointer corresponds to a quantity of writers.

Assignments (24)
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2023
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: TRAVELPORT, LP; TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; DEEM, INC.
Reel/Frame 066140/0556 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 28, 2023
From: WILMINGTON SAVINGS FUND SOCIETY, FSB
To: TRAVELPORT, LP; TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; DEEM, INC.; TRAVELPORT, INC.; TRAVELPORT OPERATIONS, INC.
Reel/Frame 066157/0732 →
SECURITY INTEREST Recorded Dec 4, 2023
From: TRAVELPORT, LP; TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; DEEM, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 065762/0267 →
SECURITY INTEREST Recorded May 25, 2023
From: TRAVELPORT TECHNOLOGIES LLC
To: TRAVELPORT TECHNOLOGIES HOLDINGS LLC
Reel/Frame 063764/0092 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2023
From: TRAVELPORT TECHNOLOGIES HOLDINGS LLC
To: TRAVELPORT, LP
Reel/Frame 063556/0755 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Mar 30, 2023
From: TRAVELPORT, LP [COMPOSED OF: TRAVELPORT HOLDINGS, LLC]; TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; DEEM, INC.; TRAVELPORT, INC.; TRAVELPORT OPERATIONS, INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 063197/0551 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2020
From: WILMINGTON SAVINGS FUND SOCIETY, FSB, AS COLLATERAL AGENT
To: TRAVELPORT, LP; TRAVELPORT INTERNATIONAL OPERATIONS LIMITED
Reel/Frame 054016/0938 →
SECURITY INTEREST Recorded Sep 25, 2020
From: TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; TRAVELPORT TECHNOLOGIES LLC
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 053889/0722 →
RELEASE OF SECURITY INTEREST Recorded Sep 25, 2020
From: UMB BANK, NATIONAL ASSOCIATION
To: TRAVELPORT TECHNOLOGIES LLC
Reel/Frame 053888/0968 →
SECURITY INTEREST Recorded Sep 25, 2020
From: TRAVELPORT INTERNATIONAL OPERATIONS LIMITED; TRAVELPORT TECHNOLOGIES LLC
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 053890/0852 →
ASSIGNMENT OF PATENT SECURITY INTERESTS (2ND LIEN) Recorded Jun 29, 2020
From: BANK OF AMERICA, N.A.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB, AS SUCCESSOR ADMINISTRATIVE AGENT AND SUCCESSOR COLLATERAL AGENT
Reel/Frame 053080/0430 →
ASSIGNMENT OF PATENT SECURITY INTERESTS (1ST LIEN) Recorded Jun 29, 2020
From: BANK OF AMERICA, N.A.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB, AS SUCCESSOR ADMINISTRATIVE AGENT AND SUCCESSOR COLLATERAL AGENT
Reel/Frame 053080/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: TRAVELPORT TECHNOLOGIES LLC
To: UMB BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052852/0587 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2020
From: TRAVELPORT TECHNOLOGIES HOLDINGS LLC
To: TRAVELPORT TECHNOLOGIES LLC
Reel/Frame 052569/0640 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 5, 2020
From: TRAVELPORT, LP
To: TRAVELPORT TECHNOLOGIES HOLDINGS LLC
Reel/Frame 052569/0506 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2019
From: US BANK
To: TRAVELPORT, LP; TRAVELPORT, INC.; TRAVELPORT OPERATIONS, INC.; GALILEO INTERNATIONAL TECHNOLOGY, LLC
Reel/Frame 049469/0269 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2019
From: GOLDMAN SACHS BANK USA
To: TRAVELPORT, LP; TRAVELPORT INC.; TRAVELPORT OPERATIONS, INC.; GALILEO INTERNATIONAL TECHNOLOGY, LLC
Reel/Frame 049469/0262 →
SECOND LIEN SECURITY AGREEMENT Recorded Jun 5, 2019
From: TRAVELPORT, LP
To: BANK OF AMERICA, N.A.
Reel/Frame 049372/0777 →
FIRST LIEN SECURITY AGREEMENT Recorded Jun 4, 2019
From: TRAVELPORT, LP
To: BANK OF AMERICA, N.A.
Reel/Frame 049368/0703 →
RELEASE OF SECURITY INTEREST Recorded Mar 18, 2018
From: GOLDMAN SACHS BANK USA
To: GALILEO INTERNATIONAL TECHNOLOGY, LLC; TRAVELPORT, LP; TRAVELPORT INC.; TRAVELPORT OPERATIONS, INC.
Reel/Frame 045263/0772 →
SECURITY INTEREST Recorded Mar 18, 2018
From: TRAVELPORT, LP; TRAVELPORT OPERATIONS, INC.; TRAVELPORT INC.; GALILEO INTERNATIONAL TECHNOLOGY, LLC
To: GOLDMAN SACHS BANK USA
Reel/Frame 045263/0779 →
SECURITY INTEREST Recorded Mar 16, 2018
From: TRAVELPORT, LP; TRAVELPORT OPERATIONS, INC.; TRAVELPORT INC.; GALILEO INTERNATIONAL TECHNOLOGY, LLC
To: U.S. BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 045257/0659 →
SECURITY INTEREST Recorded Aug 1, 2017
From: TRAVELPORT, LP
To: GOLDMAN SACHS BANK USA
Reel/Frame 043160/0909 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2016
From: KARR, BRYAN
To: TRAVELPORT, LP
Reel/Frame 038679/0269 →