IP Library Granted Patent US 7,784,059
Granted Patent B2
US 7,784,059 · App. 11/466,268 · Granted Aug 24, 2010

Stateless asynchronous message transmission

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 7,784,059
App. No.
11/466,268
Granted
Aug 24, 2010
Kind
B2
Abstract

In one embodiment of this invention, a computer system performs a method for stateless asynchronous message transmission. The method involves a first software application instantiating a listener communication thread for communication with a process of a second software application. The method involves receiving an event notification from a sender communication thread, then suspending the sender communication thread in the second process while the second process continues running. The method involves storing a thread identifier of the suspended sender communication thread and the memory address of an event message within the event notification. The method involves writing information to the suspended sender communication thread during the suspension of the sender communication thread to change values that are provided to the second software application. Lastly, the method involves resuming the sender communication thread subsequent to writing the information, thereby instructing the second process of the second application to process the written information.

Claims (35)

1. At a computer system where a first process has been instantiated by a first software application and a second process has been instantiated by a second software application, a method for asynchronous communication between the first software application and the second software application, the method comprising:

the first software application instantiating at least a listener communication thread for communication with the second process of the second software application;

the listener communication thread of the first software application receiving an event notification from a sender communication thread of the second software application, the event notification containing information identifying an event message in a process address space of the second software application;

the listener communication thread of the first software application suspending the sender communication thread in the second process;

the second process continuing to run during the suspension of the sender thread;

the sender communication thread remaining suspended until receiving a message to resume from the first process;

the listener communication thread storing a thread identifier of the suspended sender communication thread and a memory address of an event message within the event notification;

the listener communication thread writing information to the suspended sender communication thread during the suspension of the sender communication thread, the written information changing values that are provided to the second process of the second software application;

the listener communication thread causing the sender communication thread to resume subsequent to writing the information; and

the listener communication thread instructing the second process of the second application to process the written information.

2. The method of claim 1 , wherein communication between the first and second software applications comprises asynchronous communication where the transmissions of the first software application and of the second software application are independent and lack synchronization to an external clock.

3. The method of claim 1 , wherein communication between the first and second software applications comprises stateless communication where neither application maintains any memory of previous requests or stores resources regarding any current transmission.

4. The method of claim 1 , wherein the first software application and the second software application are on separate computer systems and are configured to communicate remotely.

5. The method of claim 1 , wherein the event message comprises a buffer which represents textual, graphical, or other information relating to an event.

6. The method of claim 1 , wherein the information identifying the event message comprises a name, type, size, location or other identifying information about the application, the process, or the computer system that sent event notification.

7. The method of claim 1 , further comprising using thread identifiers to identify which threads were suspended, which threads were written to, and which threads are to be resumed.

8. The method of claim 1 , wherein the first software application comprises a debugging application.

9. The method of claim 1 , wherein the second software application comprises an application that is being debugged.

10. The method of claim 1 , wherein the listener communication thread has sufficient security permissions to suspend, resume, and write to the sender communication thread.

11. The method of claim 1 , wherein the sender communication thread lacks security permissions to access the first process.

12. The method of claim 1 , wherein the sender communication thread is unaware of the existence of the listener communication thread.

13. A computer program product for use at a computer system, the computer program product for implementing a method for stateless asynchronous message transmission, the computer program product comprising one or more computer-readable storage media having stored thereon computer-executable instructions that, when executed by one or more processors of the computer system, cause the computer system to perform a method comprising:

a first software application instantiating at least a listener communication thread for communication with a second process of a second software application;

the listener communication thread of the first software application receiving an event notification from a sender communication thread of the second software application, the event notification containing information identifying an event message in a process address space of the second software application;

the listener communication thread of the first software application suspending the sender communication thread in the second process;

the second process continuing to run during the suspension of the sender thread;

the sender communication thread remaining suspended until receiving a message to resume from the first process;

the listener communication thread storing a thread identifier of the suspended sender communication thread and a memory address of an event message within the event notification;

the listener communication thread writing information to the suspended sender communication thread during the suspension of the sender communication thread: the written information changing values that are provided to the second process of the second software application;

the listener communication thread causing the sender communication thread to resume subsequent to writing the information and;

the listener communication thread instructing the second process of the second application to process the written information.

14. The computer program product of claim 13 , wherein communication between the first and the second software applications comprises asynchronous communication where the transmissions of the first software application and of the second software application are independent and lack synchronization to an external clock.

15. The computer program product of claim 13 , wherein communication between the first and the second software applications comprises stateless communication where neither application maintains any memory of previous requests or stores resources regarding any current transmission.

16. The computer program product of claim 13 , wherein the first software application and the second software application are on separate computer systems and are configured to communicate remotely.

17. The computer program product of claim 13 , wherein the first software application comprises a debugging application and the second software application comprises an application that is being debugged, eventing used to debug the second software application built on a debugging pipeline between the first software application and the second software application so as to simplify the second software application's responsibilities during debugging.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2006
From: STALL, J. MICHAEL
To: MICROSOFT CORPORATION
Reel/Frame 018236/0898 →