Transactional memory for GCC 4.7.0
Posted Nov 10, 2011 4:31 UTC (Thu) by quotemstr
Parent article: Transactional memory for GCC 4.7.0
While transactional memory is a neat feature, the particular model being proposed here could use some simplification. Consider this paragraph:
Note: A cancel-outer statement cancels only outer atomic transactions; the restrictions above imply that a cancel-outer statement cannot be executed when the outermost atomic transaction is not an outer atomic transaction. In contrast, an unannotated cancel statement can cancel an outer atomic transaction if it is the immediately enclosing atomic transaction
Why do we need separate outermost and atomic transactions? (The outer-most transaction isn't even necessarily an outermost transaction.) Why does "throw" commit
a transaction by default, necessitating the creation of a separate cancel-and-throw operator? Why is there no retry provision built into the transaction? Why do we mix lexical and dynamic scope?
IMHO, it'd be better to simplify the whole thing and allow only simple operations and inline functions over simple operations inside transactions. Aren't most transactions, in practice, going to be of this variety anyway?
to post comments)