| 788 | |
| 789 | --------------------------------------------------------------------------------------------------- |
| 790 | == Boost.STM == |
| 791 | * '''Author(s):''' Justin E. Gottchlich , Vicente J. Botet Escribá |
| 792 | * '''Version:''' 0.1 |
| 793 | * '''State:''' work on going |
| 794 | * '''Last upload:''' 2009 Sep 19 |
| 795 | * '''Links:''' [http://eces.colorado.edu/~gottschl/tboostSTM/aboutTBoost.STM.html Web Site] [http://eces.colorado.edu/~gottschl/tboostSTM/downloads.html Downloads] [https://svn.boost.org/svn/boost/sandbox/stm Boost Sandbox] |
| 796 | * '''Categories:''' [#ConcurrentProgramming Concurrent Programming] |
| 797 | * '''Description:''' Transactional memory (TM) is a new parallel programming mechanism that reduces the complexity of parallel programming. TM reduces parallel programming complexity by abstracting away the necessary synchronization mechanisms from the parallel code, allowing the programmer to write parallel applications without worry of deadlocks, livelocks or race conditions. |
| 798 | |
| 799 | Transactional memory is an active research interest for many academic and industry institutions with many open questions about its behavior. |
| 800 | |
| 801 | TBoost.STM is a C++ lock-based software transactional memory (STM) library. Our approach to STM is to use only native language semantics while implementing the least intrusive, most type-safe object oriented solution possible. |
| 802 | |
| 803 | TBoost.STM provides: |
| 804 | |
| 805 | * Optimistic concurrency |
| 806 | * ACI transactions |
| 807 | o Atomic: all operations execute or none do |
| 808 | o Consistent: only legal memory states |
| 809 | o Isolated: other txes cannot see until committed |
| 810 | * Language-like atomic transaction macro blocks |
| 811 | * Closed, flattened composable transactions |
| 812 | * Direct and deferred updating run-time policies |
| 813 | * Validation and invalidation conflict detection policies |
| 814 | * Lock-aware transactions |
| 815 | * Programmable contention management, enabling programmers to specify forward progress mechanisms |
| 816 | * Isolated and irrevocable transactions for transactions that must commit (i.e., I/O transactions) |
| 817 | |