There are other DCAS algorithms, too, including (IIRC) one which is probabilistic (but strong). One problem I encountered is that early Opterons don't implement a 128-bit CAS.
Also, my particular task was implementing POSIX signals for pthreads-win32, which ruled out dynamic allocation (requiring locking) of context structures--required by many (all?) of these CAS algorithms.
Posted Jun 6, 2009 1:34 UTC (Sat) by ekmett (guest, #58940)
[Link]
You can get by with the 8 byte version of cmpxchg by using an array of slots
rather than raw pointers, it is just less elegant.
But even so thats a far cry from no implementation being possible. ;)
Transactional Memory
Posted Jun 8, 2009 19:52 UTC (Mon) by wahern (subscriber, #37304)
[Link]
How many slots?
Should I just tell pthread-win32 users, "POSIX signals work without any trouble... just don't use more than N threads"?
That's not STM per the theory, is it? That's something very close to STM, but still requires workarounds and caveats. And w/ that attitude, Intel or AMD will never give us the hardware support that's needed.
Unless STM is simple and straightforward (which, even if the algorithm is complicated, it's _universal_, and so you won't have to roll your own everytime), then people will still mostly just _talk_ about STM rather than actually _using_ real STM, w/ the concomitant _realized_ benefits.
Transactional Memory
Posted Jun 11, 2009 12:33 UTC (Thu) by ekmett (guest, #58940)
[Link]