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; storing the contents of the data structure instance in a shared memory that is accessible to a plurality of concurrently executing computations; 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; in response to said detecting, invoking a contention management mechanism that is separate from the computation and that is configured to facilitate progress of the computation given the contention; wherein the method is employed in an implementation of software transactional memory that manages access to the data structure instance, and wherein the contention management mechanism includes a feedback mechanism; and supplying, by the feedback mechanism, an abort conflicting transaction indication in accordance with a then-current contention management policy.