Compiling join patterns using software transactional memories
First Claim
1. A computer-readable medium having computer-executable instructions for performing steps comprising:
- performing a first set of changes associated with a first join pattern, the first set of changes performed by granting a first processing thread non-exclusive access to a first set of channels;
performing a second set of changes associated with a second join pattern, the second set of changes performed by granting a second processing thread non-exclusive access to a second set of channels;
determining whether the first set of changes is consistent with the second set of changes;
if the first set of changes is consistent with the second set of changes, then committing the first set of changes and the second set of changes;
if the first set of changes is inconsistent with the second set of changes, then;
committing to memory one of the first set of changes and the seconds set of changes; and
rolling back one of the first set of changes and the second set of changes.
2 Assignments
0 Petitions
Accused Products
Abstract
Join patterns may be compiled using software transactional memories (STM'"'"'s) without the use of locks or other low level constructs. In particular, any number of STM threads may each perform a corresponding change set on a corresponding channel set. Each such STM thread may perform its corresponding change set by acquiring non-exclusive access to its corresponding channel set. Once each of the STM threads has performed its corresponding change set, a comparison is made to determine whether any two or more of the change sets are inconsistent with one another. The consistent change sets may be committed to memory. The inconsistent change sets may be either committed or rolled back.
21 Citations
20 Claims
-
1. A computer-readable medium having computer-executable instructions for performing steps comprising:
-
performing a first set of changes associated with a first join pattern, the first set of changes performed by granting a first processing thread non-exclusive access to a first set of channels;
performing a second set of changes associated with a second join pattern, the second set of changes performed by granting a second processing thread non-exclusive access to a second set of channels;
determining whether the first set of changes is consistent with the second set of changes;
if the first set of changes is consistent with the second set of changes, then committing the first set of changes and the second set of changes;
if the first set of changes is inconsistent with the second set of changes, then;
committing to memory one of the first set of changes and the seconds set of changes; and
rolling back one of the first set of changes and the second set of changes. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for executing a choice join pattern that is a choice between a favored join pattern branch and a disfavored join pattern branch, the favored join pattern branch performing a first set of changes on a first set of channels, the disfavored join pattern branch performing a second set of changes on a second set of channels, the method comprising:
(a) determining whether each channel in the first set of channels is accessible to the favored join pattern branch;
(b) if so, then attempting to execute a first software transactional memory code associated with the favored join pattern branch;
(c) if not then determining whether each channel in the second set of channels is accessible to the disfavored join pattern branch;
(d) if so, then attempting to execute a second software transactional memory code associated with the disfavored join pattern branch; and
(e) if not, then returning to step (a). - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
16. A method for executing a join pattern performing a set of changes on a set of channels, the method comprising:
-
(a) monitoring the set of channels to determine when they become accessible to the join pattern; and
(b) when the set of channels become accessible to the join pattern, generating a processing thread to execute a software transactional memory handler for the join pattern. - View Dependent Claims (17, 18, 19, 20)
-
Specification