
Am Friday 11 December 2009 17:07:58 schrieb Gottlob Frege:
The message should however be clear: ll/sc is *brittle* and not usable for ABA prevention.
Helge
Sad thing is that if some of those brittle restrictions could be removed, ll/sc could be a more useful than CAS. And unfortunately C++0x seems to be leanings towards CAS, and that might discourage other alternatives.
What _are_ the alternatives? Transactional memory systems have been promised "real soon now", but are not there yet, and standardizing something unimplementable helps no one. In my opinion the problem is something entirely different: When you need a "queue" concept, you will highly likely immediately choose a doubly-linked list without further thought. The thing that turned out to be really difficult is the construction of direct wait-free equivalents of such seemingly "simple" specific data structures. This has not prevented programmers who had no trouble constructing data-structures custom-tailored to their specific purpose from being very successful with just CAS. This track record, the many instances of code using locking that could be replaced with wait-free methods (see e.g. my wait-free signal/slot library) and the theoretical results showing CAS to be universal make me quite content with CAS. Helge