|
|
|
|
|
by exDM69
5318 days ago
|
|
GCC will probably not use any specific hardware facilities, which means this is probably going to be implemented with regular atomic operations. Within a transaction block, the results of all reads are stored (to a local, hidden variable). When the transaction is about to finish, all reads are repeated and if any of them yields a different result, the transaction is restarted. When the transaction is committed, there will likely be some kind of a global lock (that will be held for a very small time). As GCC probably doesn't require any kind of threading or locking, it's most likely that the write lock will be a spinlock using an atomic read-modify-write and some kind of yield instruction (monitor/mwait on new cpu's, pause on older). As far as I can see, there really aren't lots of other methods to implement STM, especially from within the C compiler. |
|