How do you implement Software Transactional Memory?
Posted
by Joseph Garvin
on Stack Overflow
See other posts from Stack Overflow
or by Joseph Garvin
Published on 2009-10-26T22:05:19Z
Indexed on
2010/04/21
17:33 UTC
Read the original article
Hit count: 354
In terms of actual low level atomic instructions and memory fences (I assume they're used), how do you implement STM? The part that's mysterious to me is that given some arbitrary chunk of code, you need a way to go back afterward and determine if the values used in each step were valid. How do you do that, and how do you do it efficiently? This would also seem to suggest that just like any other 'locking' solution you want to keep your critical sections as small as possible (to decrease the probability of a conflict), am I right? Also, can STM simply detect "another thread entered this area while the computation was executing, therefore the computation is invalid" or can it actually detect whether clobbered values were used (and thus by luck sometimes two threads may execute the same critical section simultaneously without need for rollback)?
© Stack Overflow or respective owner