US20130031138A1 - Method and apparatus for improving the performance of object-oriented queues - Google Patents
Method and apparatus for improving the performance of object-oriented queues Download PDFInfo
- Publication number
- US20130031138A1 US20130031138A1 US13/365,397 US201213365397A US2013031138A1 US 20130031138 A1 US20130031138 A1 US 20130031138A1 US 201213365397 A US201213365397 A US 201213365397A US 2013031138 A1 US2013031138 A1 US 2013031138A1
- Authority
- US
- United States
- Prior art keywords
- queue
- entry object
- queue entry
- existing
- oriented
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000003780 insertion Methods 0.000 claims abstract description 25
- 230000037431 insertion Effects 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 description 19
- 238000007726 management method Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 238000012966 insertion method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Definitions
- FIG. 2 is a flow diagram of a method 20 for inserting a queue entry, e.g., a queue entry object, into an object-oriented (OO) queue, according to conventional processes.
- the method 20 includes a step 22 of creating or allocating a new queue entry object. Initially, a user of the queue creates (allocates) a new queue entry object to be inserted into the queue.
- the created queue entry object includes data supplied by the queue user, and appropriate structure and methods for manipulating the data within the queue entry object.
- the data structure and methods within the queue entry object are self-contained and independent of the queue structure and the methods within the queue object that operate the queue.
- the method 20 also includes a step 24 of calling a queue insert method.
- the queue user calls the queue insert method, which typically is located within or otherwise part of the queue object.
- the queue object includes data structures that define the structure of the queue and also includes the methods or procedures for operating the queue.
- FIG. 5 is a schematic view of a queue object 60 associated with or corresponding to an object-oriented queue, according to an embodiment.
- the queue object 60 includes a plurality of queue entry objects 62 that are available (A) for use, which are the result of the step 42 of supplying the queue object 60 with the queue entry object of the type the queue will contain.
- the queue object 60 can include one or more queue entry objects 64 that are in use (U), i.e., that are in the queue.
- U queue entry objects 64 that are in use
- each of the in-use queue entry objects can be in use and accessible, or in use but inaccessible.
- one or more of the available queue entry objects could have been previously in use, but now is available for reuse by the queue.
- the queue object 60 also includes a queue list 66 that keeps track of the queue entry objects in the queue, as well as the status or state of each of the queue entry objects in the queue.
- the queue list 66 also keeps track of when the insertion of a queue entry object into the queue is complete and when the removal of a queue entry object from the queue is complete. For example, as shown generally by an arrow 67 , one of the queue entry objects 64 is shown as being in the queue and the insertion of the queue entry object into the queue is marked or checked as complete. That is, the queue entry object 64 is in use and accessible, e.g., by a queue user.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A method for managing object-oriented queues by reusing queue entry objects instead of creating and destroying each queue entry object inserted into and removed from the queue. Inserting a queue entry object into the queue involves changing the status of the queue entry object from available to in-use, adding the queue entry object to a queue list, returning a reusable queue entry object to the queue user, receiving an insertion notification that the queue entry object data is valid, and marking the insertion of the queue entry object into the queue as complete. Removing a queue entry object from the queue involves un-marking the queue entry object in the queue as complete, removing the queue entry object from the queue list, returning the valid queue entry object to the queue user, receiving a removal notification that valid data has been extracted from the queue entry object, and changing the status of the reusable queue entry object removed from the queue list from in-use to available.
Description
- The instant application is a continuation of, and claims the benefit of, U.S. patent application Ser. No. 12/631,159, entitled “METHOD AND APPARATUS FOR IMPROVING THE PERFORMANCE OF OBJECT ORIENTED QUEUES”, filed Dec. 4, 2009, the contents of which are incorporated herein by reference in their entirety.
- 1. Field
- The instant disclosure relates generally to object-oriented queues, and more particularly, to reducing the processing resource overhead involved in managing object-oriented queues.
- 2. Description of the Related Art
- A program object is a data structure that includes data fields and one or more methods or procedures for adding, deleting or otherwise manipulating the data in the program object. When managing the processing of program objects, e.g., in object-oriented programming (OOP), there often is a need to keep program objects in a queue, e.g., as queue entry objects. A queue is any suitable type of ordered collection of entries, such as a LIFO (last in, first out) queue or a FIFO (first in, first out) queue. In many object-oriented programming applications, a queue is implemented as a queue object that generally defines the structure of the queue and provides the methods or procedures for operating the queue, including the operations of adding queue entry objects to the queue and removing queue entry objects from the queue.
- Conventionally, when managing object-oriented (OO) queues, queue entry objects are inserted into the queue first by creating (i.e., allocating) a new queue entry object and then calling (or executing) an appropriate method within the queue object to insert the new queue entry object into the queue. To remove a queue entry object from the queue, another method within the queue object is called or executed to remove the queue entry object from the queue and to return the queue entry object to the caller. In such conventional queue management processing, once the queue entry object has been removed from the queue and used by the caller, the queue entry object is destroyed (i.e., deallocated). The creation and destruction of queue entry objects inserted into and deleted from a queue in this manner often results in relatively significant processing overhead, especially for processes in which a major portion of the process involves inserting queue entry objects into a queue and removing queue entry objects from a queue.
- Disclosed is a method and apparatus for managing object-oriented queues, such as queues in object-oriented programming, in a manner that reduces processing overhead associated with inserting queue entry objects into the object-oriented queue and removing queue entry objects from the object-oriented queue. Instead of creating each queue entry object that is to be inserted into the queue and destroying each queue entry object after it is removed from the queue, the queue entry objects are reused by the queue object and the user of the queue. Prior to using the queue, a queue entry object of the type to be used in the queue can be provided to the queue object and copies of the queue entry object can be made within the queue object. The methods for managing the queue include inserting a queue entry object into the queue in response to a queue user calling a queue insert method, and removing a queue entry object from the queue in response to a queue user calling a queue removal method. The insertion portion of the method includes adding to a queue list a reference or other indicia of the queue entry object to be inserted into the queue, changing the status of the queue entry object added to the queue list from an available queue entry object to an in-use queue entry object, returning a reusable queue entry object to the queue user, receiving an insertion notification from the queue user when the queue entry object is a valid queue entry object having valid data entered therein by the queue user, and marking in the queue list the insertion of the valid queue entry object into the queue as complete. The removal portion of the method includes un-marking in the queue list as complete a queue entry object to be removed from the queue, removing from the queue list a reference or other indicia of the queue entry object to be removed from the queue, returning a valid queue entry object to be removed from the queue to the queue user, receiving from the queue user a removal notification when the queue entry object has had its valid data extracted therefrom, and changing the status of the reusable queue entry object removed from the queue list from an in-use queue entry object to an available queue entry object.
-
FIG. 1 is a schematic view of a queue, such as an object-oriented (OO) queue, illustrating the insertion of a queue entry object into the queue and the removal of a queue entry object from the queue; -
FIG. 2 is a flow diagram of a method for inserting a queue entry object into an object-oriented queue according to conventional processes; -
FIG. 3 is a flow diagram of a method for removing a queue entry object from an object-oriented queue according to conventional processes; -
FIG. 4 is a flow diagram of a method for inserting a queue entry object into an object-oriented queue, according to an embodiment; -
FIG. 5 is a schematic view of a queue object within an object-oriented queue, according to an embodiment; -
FIG. 6 is a schematic view of the queue object ofFIG. 5 , illustrating a first portion of inserting a queue entry object into the queue, according to an embodiment; -
FIG. 7 is a schematic view of the queue object ofFIG. 5 , illustrating a second portion of inserting a queue entry object into the queue, according to an embodiment; -
FIG. 8 is a flow diagram of a method for removing a queue entry object from an object-oriented queue, according to an embodiment; -
FIG. 9 is a schematic view of the queue object ofFIG. 7 , illustrating a first portion of removing a queue entry object from the queue, according to an embodiment; -
FIG. 10 is a schematic view of the queue object ofFIG. 7 , illustrating a second portion of removing a queue entry object from the queue, according to an embodiment; and -
FIG. 11 is a schematic view of an apparatus configured to manage queues, such as object-oriented queues, according to an embodiment. - In the following description, like reference numerals indicate like components to enhance the understanding of the disclosed method and apparatus for improving the management of queues through the description of the drawings. Also, although specific features, configurations and arrangements are discussed hereinbelow, it should be understood that such is done for illustrative purposes only. A person skilled in the relevant art will recognize that other steps, configurations and arrangements are useful without departing from the spirit and scope of the disclosure.
-
FIG. 1 is a schematic view of aqueue 10, such as object-oriented (OO) queue or other suitable queue. Thequeue 10 can be any suitable type of ordered collection of entries, such as a LIFO (last in, first out) queue or a FIFO (first in, first out) queue. Thequeue 10 can include one or more queue entries orqueue entry objects 12, e.g., queue entry objects A-D, arranged in a particular order, e.g., depending on when the queue entry objects were inserted into thequeue 10. - As is conventional in queuing processes, a new
queue entry object 14, e.g., a queue entry object X, can be added to thequeue 10, e.g., as shown. Typically, a queue stores queue entry objects at the tail or end of the queue, and in the order in which the queue entry objects are added to the queue. Thequeue 10 also can have an existingqueue entry object 16, e.g., a queue entry object Y, removed from thequeue 10. The queue entry object that is removed from thequeue 10 is based on the configuration of the queue, e.g., whether thequeue 10 is a LIFO queue, in which case the last queue entry object added to the tail of the queue is removed first, or a FIFO queue, in which case the first or earliest queue entry object added to the queue is removed first. Alternatively, thequeue 10 can be configured to remove a specific queue entry object occupying a specific position in the queue. -
FIG. 2 is a flow diagram of amethod 20 for inserting a queue entry, e.g., a queue entry object, into an object-oriented (OO) queue, according to conventional processes. Themethod 20 includes astep 22 of creating or allocating a new queue entry object. Initially, a user of the queue creates (allocates) a new queue entry object to be inserted into the queue. The created queue entry object includes data supplied by the queue user, and appropriate structure and methods for manipulating the data within the queue entry object. As in conventional object-oriented applications, the data structure and methods within the queue entry object are self-contained and independent of the queue structure and the methods within the queue object that operate the queue. - The
method 20 also includes astep 24 of calling a queue insert method. Once the queue user has created the new queue entry object, the queue user (caller) calls the queue insert method, which typically is located within or otherwise part of the queue object. As discussed hereinabove, in many object-oriented programming applications, the queue object includes data structures that define the structure of the queue and also includes the methods or procedures for operating the queue. - The
method 20 also includes astep 26 of passing the new queue entry object to the queue object. Once the queue user has created the new queue entry object and called the insert method, the insert method passes the new queue entry object as its parameter from the queue user (caller) to the queue object. - The
method 20 also includes astep 28 of inserting the new queue entry object into the queue. After the insert method has passed the new queue entry object to the queue object, the queue object inserts the new queue entry object into the queue, e.g., at the tail or end of the queue. -
FIG. 3 is a flow diagram of amethod 30 for removing a queue entry object from an object-oriented queue, according to conventional processes. Themethod 30 includes astep 32 of calling a queue entry object removal method. When a queue entry object is to be removed from the queue, e.g., as directed by the queue user or some process external to the queue, the queue user (caller) calls the queue removal method, which typically is located within or otherwise is a part of the queue object. - The
method 30 also includes astep 34 of returning a queue entry with valid data to the caller. In response to the caller calling the queue entry object removal method within the queue object, the called queue entry object removal method returns an appropriate queue entry object from the queue to the caller. As discussed hereinabove, for a LIFO queue, the last queue entry object added to the tail of the queue is removed first and therefore would be the queue entry object returned to the caller. If the queue is a FIFO queue, the first or earliest queue entry object added to the queue is removed and returned to the caller. - The
method 30 also includes astep 36 of using the data in the removed queue entry object. Once the particular queue entry object has been removed from the queue to the caller by the queue entry object removal method, the removed queue entry object and its data therein is used by the caller for its desired purpose. - The
method 30 also includes astep 38 of destroying or deallocating the removed queue entry object. Once the queue entry object has been removed from the queue and the caller has used the removed queue entry object and its data for the desired purpose, the caller or some subsequent automatic or manual memory garbage collection action destroys (deallocates) the removed queue entry object. In this manner, the removed queue entry object ceases to exist and may not be used again. - As discussed previously hereinabove, the processing overhead involved in both creating (allocating) a new queue entry object prior to insertion into the queue and destroying (deallocating) a used queue entry object after removal from the queue may be a relatively significant portion of the overall processing overhead, especially for system processes in which a major portion of the process involves queue insertion and queue removal of queue entry objects. However, unlike conventional object-oriented queue methods that create (allocate) each new queue entry object that is inserted into the queue and destroy (deallocate) each queue entry object that is removed from the queue, the inventive methods described in greater detail hereinbelow reuse existing queue entry objects in the queue. By reusing the queue entry objects in the queue, such inventive methods eliminate the overhead associated with the recurring creation (allocation) of new queue entry objects for insertion into the queue and the subsequent destructions (deallocation) of the queue entry objects removed from the queue according to conventional configurations and arrangements.
-
FIG. 4 is a flow diagram of amethod 40 for inserting a queue entry object into an object-oriented queue, according to an embodiment. Prior to the first use of theinsertion method 40, e.g., during the initial creation of the queue, astep 42 is performed in which the queue object is supplied with a queue entry object of the type the queue will contain and the queue object creates a sufficient number of copies of the queue entry object to represent the queue entry objects that will be held in the queue. In this manner, the queue entry objects in the queue are created only once. Also, the queue entry objects will be destroyed only when the queue itself (and its queue object) is destroyed. Additional copies of the queue entry object may be created or destroyed by the queue object during the subsequent normal operation of the queue. However, the creation and destruction of queue entry objects is not a direct consequence of inserting queue entry objects into the queue or removing queue entry objects from the queue. -
FIG. 5 is a schematic view of aqueue object 60 associated with or corresponding to an object-oriented queue, according to an embodiment. Thequeue object 60 includes a plurality of queue entry objects 62 that are available (A) for use, which are the result of thestep 42 of supplying thequeue object 60 with the queue entry object of the type the queue will contain. Also, at any given time, e.g., during the normal operation of the queue, thequeue object 60 can include one or more queue entry objects 64 that are in use (U), i.e., that are in the queue. As will be discussed in greater detail hereinbelow, of the queue entry objects 64 that are in use (U), each of the in-use queue entry objects can be in use and accessible, or in use but inaccessible. Moreover, in theexample queue object 60 shown, one or more of the available queue entry objects could have been previously in use, but now is available for reuse by the queue. - The
queue object 60 also includes aqueue list 66 that keeps track of the queue entry objects in the queue, as well as the status or state of each of the queue entry objects in the queue. Thequeue list 66 also keeps track of when the insertion of a queue entry object into the queue is complete and when the removal of a queue entry object from the queue is complete. For example, as shown generally by anarrow 67, one of the queue entry objects 64 is shown as being in the queue and the insertion of the queue entry object into the queue is marked or checked as complete. That is, thequeue entry object 64 is in use and accessible, e.g., by a queue user. - The queue entry
object insertion method 40 includes astep 44 of calling a queue insert method. When a queue user wants to initiate the insertion of a queue entry object into thequeue object 60, the queue user (caller) calls a queue insert method within thequeue object 60. As part of thestep 44 of the insert method being called, thequeue object 60 selects an availablequeue entry object 62 that is to be used, i.e., the available queue entry object that will be reused and inserted into the queue. The selected queue entry object is added to thequeue list 66 and marked as in-use 64. -
FIG. 6 is a schematic view of thequeue object 60, illustrating a first portion of the process for inserting a queue entry object into the queue, according to an embodiment. As shown generally by anarrow 72, aqueue user 68 calls a queue insert method, e.g., INSERT (_), within thequeue object 60. The queue insert method selects an available queue entry object and adds to thequeue list 66, e.g., at the bottom of thequeue list 66, an indicia or other reference index of the particular available queue entry object. The addition of the queue entry object reference or index to thequeue list 66 is shown generally by anarrow 74. In this particular example, thequeue list 66 now has two queue entries. The called insert method then marks or changes the status of the particular queue entry object from available (A) to in use (U). At this point, the status of the particular queue entry object that has been added to thequeue list 66 is in-use (U) but inaccessible, which means that the queue object prevents any other access to the queue entry object. The queue entry object added to thequeue list 66 is in use because the queue entry object now is in thequeue list 66, but inaccessible because the queue entry object is not yet a valid queue entry object because the queue entry object has not yet been filled with valid data. - The
method 40 includes astep 46 of returning a reused queue entry object to the queue user or caller. In addition to the insert method adding a reference or index of the particular available queue entry object to thequeue list 66, the insert method returns the queue entry object to thequeue user 68, i.e., the caller of the insert method. The returned reference to the queue entry object is shown generally as a reusedqueue entry object 65. It should be understood that thequeue entry object 65 is referred to as a reused queue entry object because the queue entry object likely has been in use before and now is available for use again, thus the queue entry object is being reused. - The
method 40 includes astep 48 of filling the reused queue entry object with valid data. Upon receiving the reusedqueue entry object 65, the queue user then fills or stores desired data into the reusedqueue entry object 65, e.g., by setting the values of appropriate data fields within the reusedqueue entry object 65. The queue user filling or storing desired data into thequeue entry object 65 is shown generally by anarrow 76. - The
method 40 also includes astep 52 that completes the insertion of the queue entry object into the queue. Once the queue user has filled the reused queue entry object with valid data, the queue user calls an insert completion method, e.g., INSERT_DONE (_), within thequeue object 60. In general, the insert completion method informs thequeue object 60, with a notification or insertion notification, that the queue entry object now contains valid data and that the insertion of the queue entry object into the queue therefore is complete. -
FIG. 7 is a schematic view of thequeue object 60, illustrating a second portion of the process for inserting a queue entry object into the queue, according to an embodiment. As shown generally by anarrow 78, the insert completion method marks or otherwise indicates in thequeue list 66 the insertion of thequeue entry object 64 into the queue as complete. The insert completion method also changes the status of the queue entry object from “in use but inaccessible” to “in use and accessible” because the queue entry object still is in use but now has valid data therein. At this point, the reused queue entry object is a valid queue entry object and has been inserted into the queue. -
FIG. 8 is a flow diagram of amethod 80 for removing a queue entry object from an object-oriented queue, according to an embodiment. As discussed hereinabove, conventional queue management processes destroy (deallocate) a queue entry object removed from the queue after the queue entry object no longer is needed, e.g., after the data has been extracted from the queue entry object. However, as discussed in greater detail hereinbelow, in the inventive queue management process, queue entry objects are not destroyed after they have been removed from the queue and their data extracted. Rather, the queue entry objects subsequently are reused by the queue object in future queue management processes. - The
method 80 includes astep 82 of calling a queue removal method. When the queue user wants to initiate the removal of a queue entry object from the queue, e.g., from the head of the queue, the queue user (caller) calls a queue removal method within thequeue object 60. As part of thestep 82 of the queue removal method being called within thequeue object 60, thequeue object 60 returns to the queue user a reference to a particular queue entry object from the queue, e.g., the queue entry object at the head of the queue. -
FIG. 9 is a schematic view of thequeue object 60, illustrating a first portion of the process for removing a queue entry object from the queue, according to an embodiment. As shown generally by anarrow 92, thequeue user 68 calls a queue removal method, e.g., REMOVE (_), within thequeue object 60. The queue removal method un-marks in thequeue list 66 as complete the particular queue entry object to be removed from the queue. The queue removal method also removes the particular queue entry object from thequeue list 66, e.g., at the top of thequeue list 66. In this particular example, thequeue list 66 now has one remaining queue entry. - The
method 80 also includes astep 84 of returning the removed queue entry object to the caller, i.e., the queue user. In addition to the removal method removing the particular queue entry object from thequeue list 66, the removal method returns a reference to the particular queue entry object to thequeue user 68. The particular queue entry object being returned to the queue user is shown generally as a removedqueue entry object 69. It should be understood that the removedqueue entry object 69 still includes valid data for use by the queue user. However, the status of the queue entry object is now “in-use but inaccessible,” because the queue entry object has been removed from the queue but still has valid data therein for extraction by the queue user. - The
method 80 also includes astep 86 of extracting valid data from the queue entry object removed from the queue and returned to thequeue user 68. Upon receiving the particular queue entry object removed from the queue, the queue user extracts valid data from the particular queue entry object, e.g., the values of appropriate data fields within the particular queue entry object are used or copied. The queue user extracting and using the valid data from the removedqueue entry object 69 is shown generally by anarrow 94. - The
method 40 also includes astep 88 of making the removed queue entry object available for reuse. Once the queue user has extracted or otherwise used the valid data from the queue entry object removed from the queue, the queue user calls a removal completion method, e.g., REMOVE_DONE (_), within thequeue object 60. In general, the removal completion method informs thequeue object 60, with a notification or removal notification, that the queue entry object now is available for reuse by the queue and that the removal of the queue entry object from the queue therefore is complete. -
FIG. 10 is a schematic view of thequeue object 60, illustrating a second portion of the process for removing a queue entry object from the queue, according to an embodiment. The removal completion method notifies thequeue object 60 that the queue entry object now is available for reuse. As shown generally by anarrow 96, the removal completion method marks the queue entry object as available (A) for reuse. At this point, the reused queue entry object has been removed from the queue and now is a queue entry object available for reuse. - It should be understood that the queue management methods described herein can be used in a multitasking environment by adding the appropriate mutual exclusion mechanisms in the queue object methods. That is, it should be understood that the queue management methods described herein can be made to be thread safe.
- Also, it should be understood that the queue management methods described herein can accommodate any number of queue entry objects in the queue at a given time by adding the appropriate mechanisms to the queue object to increase or decrease the number of reusable queue entry objects as necessary.
- Also, it should be understood that the queue management methods described herein can be performed partially or completely within any suitable computing environment having the processing capability to execute or perform such queue management methods. For example, the methods described herein can be performed partially or completely within any apparatus or device having a processor or controller with suitable queue management computing capabilities.
-
FIG. 11 is a schematic view of anapparatus 100 configured to manage queues, such as object-oriented queues, according to an embodiment. Theapparatus 100 can be any apparatus, device or computing environment suitable for managing queues. For example, theapparatus 100 can be or be contained within any suitable computer system, including a mainframe computer and/or a general or special purpose computer. - The
apparatus 100 includes one or more general purpose (host) controllers orprocessors 102 that, in general, processes instructions, data and other information received by theapparatus 100. Theprocessor 102 also manages the movement of various instructional or informational flows between various components within theapparatus 100. Theprocessor 102 can include aqueue management module 104 that is configured to execute and perform the queue management processes described herein, such as adding queue entry objects to the queue and removing queue entry objects from the queue. Alternatively, the apparatus can include a stand alonequeue management module 105 coupled to theprocessor 102. - The
apparatus 100 also can include a memory orcontent storage element 106, coupled to theprocessor 102, for storing instructions, data and other information received and/or created by theapparatus 100. In addition to thememory element 106, theapparatus 100 can include at least one type of memory or memory unit (not shown) within theprocessor 102 for storing processing instructions and/or information received and/or created by theapparatus 100. - The
apparatus 100 also can include one ormore interfaces 108 for receiving instructions, data and other information. It should be understood that theinterface 108 can be a single input/output interface, or theapparatus 100 can include separate input and output interfaces. - One or more of the
processor 102, thequeue management module 104, thequeue management module 105, thememory element 106 and theinterface 108 can be comprised partially or completely of any suitable structure or arrangement, e.g., one or more integrated circuits. Also, it should be understood that theapparatus 100 includes other components, hardware and software (not shown) that are used for the operation of other features and functions of theapparatus 100 not specifically described herein. - The
apparatus 100 can be partially or completely configured in the form of hardware circuitry and/or other hardware components within a larger device or group of components. Alternatively, theapparatus 100 can be partially or completely configured in the form of software, e.g., as processing instructions and/or one or more sets of logic or computer code. In such configuration, the logic or processing instructions typically are stored in a data storage device, e.g., thememory element 106 or other suitable data storage device (not shown). The data storage device typically is coupled to a processor or controller, e.g., theprocessor 102. The processor accesses the necessary instructions from the data storage element and executes the instructions or transfers the instructions to the appropriate location within theapparatus 100. - The methods illustrated in
FIGS. 4-10 may be implemented in a general, multi-purpose or single purpose processor. Such a processor will execute instructions, either at the assembly, compiled or machine-level, to perform that process. Those instructions can be written by one of ordinary skill in the art following the description ofFIGS. 4-10 and stored or transmitted on a computer readable medium. The instructions may also be created using source code or any other known computer-aided design tool. A computer readable medium may be any medium capable of carrying those instructions and includes random access memory (RAM), dynamic RAM (DRAM), flash memory, read-only memory (ROM), compact disk ROM (CD-ROM), digital video disks (DVDs), magnetic disks or tapes, optical disks or other disks, silicon memory (e.g., removable, non-removable, volatile or non-volatile), and the like. - It will be apparent to those skilled in the art that many changes and substitutions can be made to the embodiments described herein without departing from the spirit and scope of the disclosure as defined by the appended claims and their full scope of equivalents.
Claims (20)
1. A method for managing a queue of object-oriented queue entry objects, the method comprising:
inserting an object-oriented queue entry object into the queue by reusing an existing queue entry object in the queue, wherein inserting the queue entry object in the queue includes
changing the status of an existing available queue entry object from available queue entry object to in-use queue entry object, and
entering valid data into the existing queue entry object in such a way that the existing queue entry becomes a valid queue entry object; and
removing an object-oriented queue entry object from the queue while maintaining the allocation of the queue entry object, wherein removing the object-oriented queue entry object from the queue includes
extracting valid data from an existing in-use queue entry object in such a way that the existing in-use queue entry object becomes an invalid queue entry object, and
changing the status of the existing in-use queue entry object from in-use queue entry object to available queue entry object.
2. The method as recited in claim 1 , wherein the queue has associated therewith a queue list configured to determine an availability status of a queue entry object, the completion of the insertion of a queue entry object into the queue, and the completion of the removal of a queue entry object from the queue.
3. The method as recited in claim 1 , further comprising generating a plurality of reusable queue entry objects for insertion into the queue and removal from the queue, wherein generating the plurality of reusable queue entry objects includes providing a reusable queue entry object of the type to be inserted into the queue and removed from the queue and making at least one copy of the provided reusable queue entry object.
4. The method as recited in claim 1 , wherein at least one of inserting the queue entry object in the queue includes providing an insertion notification when the existing queue entry object becomes a valid queue entry object, and removing the object-oriented queue entry object from the queue includes providing a removal notification when the existing in-use queue entry object becomes an invalid queue entry object.
5. The method as recited in claim 1 , wherein the queue entry object to be inserted into the queue has a plurality of data fields and wherein the queue user enters valid data into the queue entry object to be inserted into the queue by setting the values of at least one data field in the queue entry object to be inserted into the queue.
6. The method as recited in claim 1 , wherein the queue entry object to be removed from the queue has a plurality of data fields and wherein the queue user extracts valid data from the queue entry object to be removed from the queue by reading or copying the values of the data fields in the queue entry object to be removed from the queue.
7. The method as recited in claim 1 , wherein inserting an object-oriented queue entry object into the queue is in response to a queue user calling a queue insert method, and wherein removing an object-oriented queue entry object from the queue is in response to a queue user calling a queue removal method.
8. The method as recited in claim 1 , wherein the queue has a head end and a tail end, wherein queue entry objects are inserted into the queue at the tail end of the queue, and wherein queue entry objects are removed from the queue at the head end of the queue.
9. The method as recited in claim 1 , wherein the queue has a head end and a tail end, wherein queue entry objects are inserted into the queue at the tail end of the queue, and wherein queue entry objects are removed from the queue at the tail end of the queue.
10. The method as recited in claim 1 , wherein the queue has a head end and a tail end, wherein queue entry objects are inserted into the queue at the tail end of the queue, and wherein queue entry objects are removed from the queue at a specific position in the queue.
11. An apparatus for managing a queue of object-oriented queue entry objects, comprising:
a controller configured to receive queue entry object insertion instructional information and queue entry object removal instructional information from a queue user;
a memory element coupled to the controller for storing at least a portion of the instructional information received by the controller; and
a queue management module coupled to the controller,
wherein the queue management module is configured to insert an object-oriented queue entry object into the queue by reusing an existing queue entry object in the queue, wherein reusing an existing queue entry object in the queue includes
changing the status of an existing available queue entry object from available queue entry object to in-use queue entry object,
entering valid data into the existing queue entry object in such a way that the existing queue entry becomes a valid queue entry object, and
providing an insertion notification when the existing queue entry object becomes a valid queue entry object; and
wherein the queue management module is configured to remove an object-oriented queue entry object from the queue while maintaining the allocation of the queue entry object, wherein removing the object-oriented queue entry object from the queue includes
extracting valid data from an existing in-use queue entry object in such a way that the existing in-use queue entry object becomes an invalid queue entry object,
providing a removal notification when the existing in-use queue entry object becomes an invalid queue entry object, and
changing the status of the existing in-use queue entry object from in-use queue entry object to available queue entry object.
12. The apparatus as recited in claim 11 , wherein the queue has associated therewith a queue list configured to determine an availability status of a queue entry object, the completion of the insertion of a queue entry object into the queue, and the completion of the removal of a queue entry object from the queue.
13. The apparatus as recited in claim 11 , wherein the queue management module is configured to generate a plurality of reusable queue entry objects for insertion into the queue and removal from the queue.
14. The apparatus as recited in claim 13 , wherein the queue management module generating the plurality of reusable queue entry objects includes the queue management module providing a reusable queue entry object of the type to be inserted into the queue and removed from the queue and making at least one copy of the provided reusable queue entry object.
15. The apparatus as recited in claim 11 , wherein the queue entry object to be inserted into the queue has a plurality of data fields and wherein the queue management module is configured to enter valid data into the queue entry object to be inserted into the queue by setting the values of at least one data field in the queue entry object to be inserted into the queue.
16. The apparatus as recited in claim 11 , wherein the queue entry object to be removed from the queue has a plurality of data fields and wherein the queue management module is configured to extract valid data from the queue entry object to be removed from the queue by reading or copying the values of the data fields in the queue entry object to be removed from the queue.
17. The apparatus as recited in claim 11 , wherein the queue management module inserting an object-oriented queue entry object into the queue is in response to a queue user calling a queue insert method, and wherein the queue management module removing an object-oriented queue entry object from the queue is in response to a queue user calling a queue removal method.
18. A computer readable medium having instructions stored thereon that, when executed by a processor, carry out a method for managing a queue of object-oriented queue entry objects, the instructions comprising:
instructions for inserting an object-oriented queue entry object into the queue by reusing an existing queue entry object in the queue, wherein reusing an existing queue entry object in the queue includes
instructions for changing the status of an existing available queue entry object from available queue entry object to in-use queue entry object,
instructions for entering valid data into the existing queue entry object in such a way that the existing queue entry becomes a valid queue entry object, and
instructions for providing an insertion notification when the existing queue entry object becomes a valid queue entry object; and
instructions for removing an object-oriented queue entry object from the queue while maintaining the allocation of the queue entry object, wherein removing the object-oriented queue entry object from the queue includes
instructions for extracting valid data from an existing in-use queue entry object in such a way that the existing in-use queue entry object becomes an invalid queue entry object,
instructions for providing a removal notification when the existing in-use queue entry object becomes an invalid queue entry object, and
instructions for changing the status of the existing in-use queue entry object from in-use queue entry object to available queue entry object.
19. The computer readable medium as recited in claim 18 , further comprising instructions for generating a plurality of reusable queue entry objects for insertion into the queue and removal from the queue, wherein the generating instructions include instructions for providing a reusable queue entry object of the type to be inserted into the queue and removed from the queue and instructions for making at least one copy of the provided reusable queue entry object.
20. The computer readable medium as recited in claim 18 , wherein the queue entry object to be inserted into the queue has a plurality of data fields, further comprising instructions for entering valid data into the queue entry object to be inserted into the queue by setting the values of at least one data field in the queue entry object to be inserted into the queue, and further comprising instructions for extracting valid data from the queue entry object to be removed from the queue by reading or copying the values of the data fields in the queue entry object to be removed from the queue.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/365,397 US20130031138A1 (en) | 2009-12-04 | 2012-02-03 | Method and apparatus for improving the performance of object-oriented queues |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/631,159 US8131772B2 (en) | 2009-12-04 | 2009-12-04 | Method and apparatus for improving the performance of object-oriented queues |
US13/365,397 US20130031138A1 (en) | 2009-12-04 | 2012-02-03 | Method and apparatus for improving the performance of object-oriented queues |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/631,159 Continuation US8131772B2 (en) | 2009-12-04 | 2009-12-04 | Method and apparatus for improving the performance of object-oriented queues |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130031138A1 true US20130031138A1 (en) | 2013-01-31 |
Family
ID=44083052
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/631,159 Active 2030-09-14 US8131772B2 (en) | 2009-12-04 | 2009-12-04 | Method and apparatus for improving the performance of object-oriented queues |
US13/365,397 Abandoned US20130031138A1 (en) | 2009-12-04 | 2012-02-03 | Method and apparatus for improving the performance of object-oriented queues |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/631,159 Active 2030-09-14 US8131772B2 (en) | 2009-12-04 | 2009-12-04 | Method and apparatus for improving the performance of object-oriented queues |
Country Status (1)
Country | Link |
---|---|
US (2) | US8131772B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589941B2 (en) * | 2010-04-23 | 2013-11-19 | International Business Machines Corporation | Resource affinity via dynamic reconfiguration for multi-queue network adapters |
US9772878B2 (en) * | 2015-11-09 | 2017-09-26 | Unity IPR ApS | Determining a job group status based on a relationship between a generation counter value and a ticket value for scheduling the job group for execution |
CN108154431B (en) * | 2018-01-17 | 2021-07-06 | 北京网信云服信息科技有限公司 | Target recruitment state processing method and device |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100849221B1 (en) * | 2006-10-19 | 2008-07-31 | 삼성전자주식회사 | Method for managing non-volatile memory, and memory-based apparatus including the non-volatile memory |
-
2009
- 2009-12-04 US US12/631,159 patent/US8131772B2/en active Active
-
2012
- 2012-02-03 US US13/365,397 patent/US20130031138A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US8131772B2 (en) | 2012-03-06 |
US20110137952A1 (en) | 2011-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6496864B1 (en) | System and method for freeing shared resources in a computer system | |
DE3280446T2 (en) | Digital data processing system. | |
JP4701321B2 (en) | Memory management | |
JP3027845B2 (en) | Program control device and method | |
CN102662775B (en) | A kind of Way of Process Communication and device | |
EP0840210A2 (en) | Method and apparatus for dynamically sizing non-contiguous runtime stacks | |
US20050188164A1 (en) | System and method for memory management | |
TW442723B (en) | Dynamic memory space allocation | |
KR100846499B1 (en) | Method and apparatus for managing memory | |
CN102770841A (en) | Method and apparatus for generating a minimal boot image | |
CN101689139B (en) | Using type stability to facilitate contention management | |
US8397045B2 (en) | Memory management device, memory management method, and memory management program | |
US6363410B1 (en) | Method and system for threaded resource allocation and reclamation | |
US6523059B1 (en) | System and method for facilitating safepoint synchronization in a multithreaded computer system | |
US20240378242A1 (en) | Scalable range locks | |
US8131772B2 (en) | Method and apparatus for improving the performance of object-oriented queues | |
CN108563507A (en) | A kind of EMS memory management process, device, equipment and readable storage medium storing program for executing | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment | |
DE3280449T2 (en) | Digital data processing system. | |
CN115357427A (en) | Cross-process data copying method and device and storage medium | |
KR20150087743A (en) | Method and apparatus for controlling a memory synchronization on multi-threading processor | |
WO2017001900A1 (en) | A data processing method | |
US10754766B2 (en) | Indirect resource management | |
CN109923527A (en) | Variable type builder | |
Michael et al. | Hazard Pointers: Proposed Interface and Wording for Concurrency TS 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: UNISYS CORPORATION, PENNSYLVANIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:DEUTSCHE BANK TRUST COMPANY;REEL/FRAME:030004/0619 Effective date: 20121127 |
|
AS | Assignment |
Owner name: UNISYS CORPORATION, PENNSYLVANIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE;REEL/FRAME:030082/0545 Effective date: 20121127 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |