Multithreading with concurrency domains
First Claim
1. A system for synchronizing operations of components of a software application, comprising:
- a first concurrency domain including a single internal processing thread operative to execute at least one single-threaded object of the software application;
a first boundary object associated with the first concurrency domain operative to receive a first work item from a software application object external to the first concurrency domain and operative to post the first work item to a work item queue, the first work item being directed to the single-threaded object;
a first thread dispatcher object included in the concurrency domain operative to retrieve the posted first work item from the work item queue and to pass the posted first work item to the single-threaded object for processing by the single-threaded object; and
the single-threaded object being operative to process the posted first work item and to return a result to the external object via the first boundary object.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods, systems and computer products are provided for partitioning software application components into separate domains called concurrency domains. Computationally expensive, slow or long-running methods may be deployed into such domains, thus keeping the associated application more responsive to the end user. According to one aspect of the invention, a given concurrency domain is a partition of runtime objects for providing synchronization and thread isolation within the partition and for providing concurrency with other such partitions in a data-driven dynamically composed and reconfigured application.
59 Citations
20 Claims
-
1. A system for synchronizing operations of components of a software application, comprising:
-
a first concurrency domain including a single internal processing thread operative to execute at least one single-threaded object of the software application;
a first boundary object associated with the first concurrency domain operative to receive a first work item from a software application object external to the first concurrency domain and operative to post the first work item to a work item queue, the first work item being directed to the single-threaded object;
a first thread dispatcher object included in the concurrency domain operative to retrieve the posted first work item from the work item queue and to pass the posted first work item to the single-threaded object for processing by the single-threaded object; and
the single-threaded object being operative to process the posted first work item and to return a result to the external object via the first boundary object. - View Dependent Claims (2, 3)
-
-
4. A method for synchronizing operations of components of a software application, comprising:
-
receiving a work item for processing by a first software application component;
posting the work item in a work item queue;
determining whether the first software application component has finished processing any previous work items passed to the first software application component for processing;
if the first software application component has finished processing any previous work items passed to the first software application component for processing, retrieving the work item posted to the work item queue; and
passing the retrieved work item to the software application component for processing. - View Dependent Claims (5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer readable medium containing computer executable instructions which when executed by a computer perform a method of concurrently executing single-threaded and multithreaded objects, comprising:
-
receiving a software application containing a plurality of software components operative for processing data concurrently;
separating each of the software components operative for processing data concurrently into separate concurrency domains;
associating a boundary object with each separate concurrency domain for receiving any data calls directed to software component objects contained in the separate concurrency domains; and
disposing a dispatcher object in each of the separate concurrency domains for presenting data calls to individual software component objects after the individual software component objects have completed processing of other data calls previously presented to the individual software component objects. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification