Synchronous message queues
AssigneeGemini Mobile Technologies, Inc.
InventorsGary Hayato Ogasawara, Jonah Schwartz, David Stone
Life of this patent
Estimating the term…
Abstract
A method comprising receiving a write request; adding the write request to a batch of substantially contiguous disk writes; determining to write the batch of substantially contiguous disk writes to a non-volatile memory; writing the batch of substantially contiguous disk writes to the non-volatile memory; sending a confirmation of writing the batch of substantially contiguous disk writes; receiving a confirmation of the confirmation of writing; and clearing the batch of substantially contiguous disk writes.
Claims73
A method comprising:
- receiving a write request;
- adding the write request to a batch of disk writes;
- determining to write the batch of disk writes to a non-volatile memory;
- writing the batch of disk writes to the non-volatile memory;
- sending a confirmation of writing the batch of disk writes;
- receiving a confirmation of the confirmation of writing;
- and
- clearing the batch of disk writes.
A machine-readable medium having stored thereon a plurality of executable instructions to perform a method comprising:
- receiving a write request;
- adding the write request to a batch of disk writes;
- determining it is possible to write the batch of substantially contiguous disk writes to a non-volatile memory;
- writing the batch of disk writes to the non-volatile memory;
- sending a confirmation of writing the batch of disk writes;
- receiving a confirmation of the confirmation of writing;
- and
- clearing the batch of disk writes.
A method comprising:
- acquiring control of a shared mutual exclusion lock by a first thread or process;
- sending a first write request from the first thread or process to a synchronization process;
- queuing the first write request by the synchronization thread or process;
- sending a confirmation of receipt of the first write request to the first thread or process;
- releasing control of the shared mutual exclusion lock by the first thread or process upon receipt of the confirmation of the receipt of the first write request;
- acquiring control of the shared mutual exclusion lock by a second thread or process;
- sending a second write request from the second thread or process to the synchronization process;
- queuing the second write request with the first write request by the synchronization process;
- sending a confirmation of receipt of the second write request to the second thread or process;
- releasing control of the shared mutual exclusion lock by the second thread or process upon receipt of the confirmation of the receipt of the second write request;
- writing the queued first and second write requests to a non-volatile memory;
- sending a confirmation of writing to the non-volatile memory to each of the first thread or process and the second thread or process;
- sending a confirmation of receipt of the confirmation of writing from each of the first thread or process and the second thread or process;
- and
- restarting the method, if the confirmation of receipt of the confirmation of writing is received from each of the first thread or process and the second thread or process.
A machine-readable medium having stored thereon a plurality of executable instructions to perform a method comprising:
- acquiring control of a shared mutual exclusion lock by a first thread or process;
- sending a first write request from the first thread or process to a synchronization process;
- queuing the first write request by the synchronization thread or process;
- sending a confirmation of receipt of the first write request to the first thread or process;
- releasing control of the shared mutual exclusion lock by the first thread or process upon receipt of the confirmation of the receipt of the first write request;
- acquiring control of the shared mutual exclusion lock by a second thread or process;
- sending a second write request from the second thread or process to the synchronization process;
- queuing the second write request with the first write request by the synchronization process;
- sending a confirmation of receipt of the second write request to the second thread or process;
- releasing control of the shared mutual exclusion lock by the second thread or process upon receipt of the confirmation of the receipt of the second write request;
- writing the queued first and second write requests to a non-volatile memory;
- sending a confirmation of writing to the non-volatile memory to each of the first thread or process and the second thread or process;
- sending a confirmation of receipt of the confirmation of writing from each of the first thread or process and the second thread or process;
- and
- restarting the method, if the confirmation of receipt of the confirmation of writing is received from each of the first thread or process and the second thread or process.
An apparatus comprising:
- a gateway;
- a queue data file coupled to the gateway;
- an index file coupled to the gateway;
- and
- a synchronization component coupled to the gateway and the queue data file, the synchronization component to
- receive a write request;
- add the write request to a batch of disk writes;
- determine whether to write the batch of disk writes to a non-volatile memory;
- write the batch of disk writes to the non-volatile memory;
- send a confirmation of writing the batch of disk writes;
- receive a confirmation of the confirmation of writing;
- and
- clear the batch of disk writes.
A method comprising:
- receiving a write request;
- determining whether to add the write request to a batch of outstanding requests;
- adding the write request to the batch, if it is determined to add the write request to the batch;
- determining whether to write the batch to a non-volatile memory;
- determining whether the batch is memory-mapped to the non-volatile memory, if it is determined to write the batch to the non-volatile memory;
- writing the batch to the non-volatile memory, if it is determined that the batch is memory-mapped to the non-volatile memory;
- sending confirmations of writing the batch to a process associated with each write request in the batch;
- determining whether all confirmations of writing the batch have been received;
- clearing the batch, if all confirmations of writing the batch have been received;
- determining whether any write requests were skipped or stored in a temporary storage;
- and
- looping back to receive a next write request, if it is determined there are no skipped or stored write requests.
A machine-readable medium having stored thereon a plurality of executable instructions to perform a method comprising:
- receiving a write request;
- determining whether to add the write request to a batch of outstanding requests;
- adding the write request to the batch, if it is determined to add the write request to the batch;
- determining whether to write the batch to a non-volatile memory;
- determining whether the batch is memory-mapped to the non-volatile memory, if it is determined to write the batch to the non-volatile memory;
- writing the batch to the non-volatile memory, if it is determined that the batch is memory-mapped to the non-volatile memory;
- sending confirmations of writing the batch to a process associated with each write request in the batch;
- determining whether all confirmations of writing the batch have been received;
- clearing the batch, if all confirmations of writing the batch have been received;
- determining whether any write requests were skipped or stored in a temporary storage;
- and
- looping back to receive a next write request, if it is determined there are no skipped or stored write requests.
Dependencies are inferred from the claim text.