Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm confused, Software Transactional Memory may be new but optimistically transacting is not. In 1993 I was using it at Sun in network protocol design and I was doing that because people suggested they had used that technique before and it worked well. (so it was known earlier than my use of it)

Basically if you have a system where contention is possible but unexpected, you 'tag in' before you start to do things that would be wrong if you did them in contention, and you 'tag out' when you're done. The system keeps track of a mutable state value which gets updated when state is mutated and the 'tag id' of the person who mutated it. When you tag out if you're the only tag id that has been mutating the system your done, otherwise the system resets your changes and you re-do. This 'wins' if most of the time you won't be contended. Its 'safe' because you always detect when it was contended and restart from a safe starting point. You don't 'roll back' generally because if you lost the tag race its because someone else "won" it and the new state is again consistent.

Surely there is some seminal paper on this somewhere.



That sounds an awful lot like some bus contention schemes from the late 70s/80s. It's been a while since my grad class that covered that though, so I can't provide any citations.

I notice that we're still stuck in that time period insofar as real software innovations, sigh.


It's also used in lock-free algorithms nowadays.

I remember being delighted by it when I first read about it. Rather than assume contention, it just deals with it only when it comes up. A refreshing change of mindset.


Yep, there is a seminal paper on this subject. Start by reviewing coretalk.net and directly contact me.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: