发明名称 |
Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms |
摘要 |
We teach a powerful approach that greatly simplifies the design of non-blocking mechanisms and data structures, in part by, largely separate the issues of correctness and progress. At a high level, our methodology includes designing an “obstruction-free” implementation of the desired mechanism or data structure, which may then be combined with a contention management mechanism whose role is to facilitate the conditions under which progress of the obstruction-free implementation is assured. In general, the contention management mechanism is separable semantically from an obstruction-free concurrent shared/sharable object implementation to which it is/may be applied. In some cases, the contention management mechanism may actually be coded separately from the obstruction-free implementation. We elaborate herein on the notions of obstruction-freedom and contention management, and various possibilities for combining the two. In addition, we include description of some exemplary applications to particular concurrent software mechanisms and data structure implementations. |
申请公布号 |
US9052944(B2) |
申请公布日期 |
2015.06.09 |
申请号 |
US200511106790 |
申请日期 |
2005.04.15 |
申请人 |
Oracle America, Inc. |
发明人 |
Moir Mark S.;Luchangco Victor M.;Herlihy Maurice |
分类号 |
G06F12/00;G06F13/00;G06F13/28;G06F9/46 |
主分类号 |
G06F12/00 |
代理机构 |
Meyertons, Hood, Kivlin, Kowert & Goetzel, P.C. |
代理人 |
Kowert Robert C.;Meyertons, Hood, Kivlin, Kowert & Goetzel, P.C. |
主权项 |
1. A method of operating a computing machine, the method comprising:
creating an instance of a data structure defined using one or more programming language constructs, wherein the data structure instance includes at least one transactional location for which ownership is mediated through use of a single-target synchronization primitive; storing the contents of the data structure instance in a shared memory that is accessible to a plurality of concurrently executing computations; introducing a retry construct into a flow executable to wrest ownership of the transactional location from a current owner; executing a computation that, when executed on one or more processors that access the memory, performs concurrent obstruction-free access operations on the data structure instance, wherein the obstruction-free access operations appear to execute in a one-at-a-time order and are non-blocking, but do not themselves ensure progress of the computation in the presence of contention, wherein said executing comprises: detecting contention between one of the obstruction-free access operations performed by the computation and another access operation performed on the data structure instance; and in response to said detecting, invoking a given contention management mechanism that is separate from the computation and that is configured to facilitate progress of the computation given the contention; replacing the given contention management mechanism with a substitute contention management mechanism during a course of the computation that employs the obstruction-free access operations; and subsequent to said replacing, invoking the substitute contention management mechanism, rather than the given contention management mechanism, in response to detecting contention between a subsequent one of the obstruction-free access operations performed by the computation and another access operation performed on the data structure instance. |
地址 |
Redwood City CA US |