Programming a multi-threaded application becomes more and more a common challenge since the dawn of multi-core processors. The problem programmers have to confront in this area are manyfold. First, one can not longer automatically benefit from Moore’s Law (i.e. the doubling of transistors on a chip every 12 to 18 months) since more cores mean more power but only if every core can be put to work. Second, the redesign needed to make use of more than one core often raises the issue of a complete rewrite – with all its dangers and implications. And there are the problems arising from the lack of tools and libraries. How does one implement locking of shared ressources? What about all the variables? This is where Transacional Memory comes in. It tries to solve the problem of multiple threads running in a shared memory environment. While locking would work too, it does not scale well and is a real pain to take care of, since it has to be re-done for every variable introduced (or locking gets painfully slow). So putting everything into atomic transactions should help the programmer to get better results quicker. You can read about Transacional Memory here and here.