Na stronie http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx można znaleźć bardzo ciekawy projekt implementujący transakcyjną pamięć w .NET. Dzięki temu można napisać na przykład (fragment jednego z przykładów towarzyszących STM.NET):
[...]
Atomic.Do(() =>
{
// Can we grab both forks? If not, retry
if (bforks[left] || bforks[right])
{
Atomic.Retry();
}
bforks[left] = true;
bforks[right] = true;
});
[...]
Warto dokładniej obejrzeć przykład rozwiązania problemu pięciu filozofów. Pokazana jest implementacja wykorzystująca "klasyczne" wątki oraz nową składnię wykorzystującą słowo kluczowe atomic.
Warto też zajrzeć na blog zespołu budującego ten projekt: http://blogs.msdn.com/stmteam/.
Aby zainstalować SDK, należy ściąnąć:
Uwaga! STM.NET dostępne jest tylko w wersji 32 bitowej.