<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Transactional Memory : Concurrency</title><link>http://blogs.msdn.com/stmteam/archive/tags/Concurrency/default.aspx</link><description>Tags: Concurrency</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>STM.NET Released!</title><link>http://blogs.msdn.com/stmteam/archive/2009/07/28/stm-net-released.aspx</link><pubDate>Wed, 29 Jul 2009 01:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9851515</guid><dc:creator>DGroff</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/stmteam/comments/9851515.aspx</comments><wfw:commentRss>http://blogs.msdn.com/stmteam/commentrss.aspx?PostID=9851515</wfw:commentRss><description>&lt;P&gt;I hope everyone saw &lt;A href="http://blogs.msdn.com/somasegar/default.aspx" mce_href="http://blogs.msdn.com/somasegar/default.aspx"&gt;Soma’s announcement&lt;/A&gt; that &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx" mce_href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx"&gt;STM.NET&lt;/A&gt; is now live on &lt;A href="http://msdn.microsoft.com/devlabs" mce_href="http://msdn.microsoft.com/devlabs"&gt;MSDN Devlabs&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;We have been talking about software transactional memory for some time now.&amp;nbsp; Last year my &lt;A href="http://channel9.msdn.com/shows/Going+Deep/Software-Transactional-Memory-The-Current-State-of-the-Art/" mce_href="http://channel9.msdn.com/shows/Going+Deep/Software-Transactional-Memory-The-Current-State-of-the-Art/"&gt;Ch9 interview&lt;/A&gt; I mentioned we were looking to work with customers under a non-disclosure agreement; but now you can experiment with STM.NET without a NDA!&amp;nbsp; Yesterday, we released the “.NET Framework 4 Beta 1 Enabled to use Software Transactional Memory V1.0”.&amp;nbsp; Since I am out of breath just reading that name, let’s call it “STM.NET”.&amp;nbsp; You can download it from &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx" mce_href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; If you are not ready to experiment, you might be interested in our &lt;A href="http://download.microsoft.com/download/9/5/6/9560741A-EEFC-4C02-822C-BB0AFE860E31/STM_User_Guide.pdf" mce_href="http://download.microsoft.com/download/9/5/6/9560741A-EEFC-4C02-822C-BB0AFE860E31/STM_User_Guide.pdf"&gt;programming guide&lt;/A&gt;; it discusses programming using STM in depth and it’s a great first step.&amp;nbsp; &lt;/P&gt;
&lt;TABLE border=0 width=503&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD height=160 vAlign=bottom width=465 align=middle&gt;
&lt;P align=center&gt;&lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx" mce_href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=atomic_LG border=0 alt="STM Logo" align=left src="http://blogs.msdn.com/blogfiles/stmteam/WindowsLiveWriter/STM.NETReleased_10CEA/atomic_LG_3.png" width=244 height=152 mce_src="http://blogs.msdn.com/blogfiles/stmteam/WindowsLiveWriter/STM.NETReleased_10CEA/atomic_LG_3.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD height=160 width=36 align=middle&gt;
&lt;P align=center&gt;&lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx" mce_href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx"&gt;&lt;FONT size=7&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;STM.NET&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;What we have produced is a .NET Framework where you can delineate a section of code as running within an atomic block using either a delegate (Atomic.Do) or through a try/catch mechanism.&amp;nbsp; The latter is the way we were able to provide this functionality without changing every .NET language or create new concepts in IL.&lt;/P&gt;
&lt;P&gt;In addition to the basic atomic block we have added a lot of functionality:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Tooling support 
&lt;UL&gt;
&lt;LI&gt;Debugging &lt;/LI&gt;
&lt;LI&gt;ETW Tracing &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Lock interoperability &lt;/LI&gt;
&lt;LI&gt;Interoperability with traditional transactions 
&lt;UL&gt;
&lt;LI&gt;We support MSMQ out of the box &lt;/LI&gt;
&lt;LI&gt;We leverage this support for deferred and compensating actions &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Annotations that allow you to designate: 
&lt;UL&gt;
&lt;LI&gt;Methods must either run in, not run in, or may run in a transaction &lt;/LI&gt;
&lt;LI&gt;Fields must be accessed within a transaction &lt;/LI&gt;
&lt;LI&gt;Suppress the transaction for this method &lt;/LI&gt;
&lt;LI&gt;Redirect transacted calls to another method &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Static and dynamic checking of annotations &lt;/LI&gt;
&lt;LI&gt;Many of the built-in BCL libraries and types are supported &lt;/LI&gt;
&lt;LI&gt;We have done a lot of plumbing work in the CLR to make this work 
&lt;UL&gt;
&lt;LI&gt;Integration with the garbage collector &lt;/LI&gt;
&lt;LI&gt;Support for byrefs &lt;/LI&gt;
&lt;LI&gt;Pay-for-play &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Et cetera; please refer to the programming guide for more information. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As a small team, we accomplished a lot but the whole of .NET is huge so there are areas where STM is currently not supported for instance:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;C# only 
&lt;UL&gt;
&lt;LI&gt;There are a number of VB.NET constructs which we don’t support &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;- VS2008 
&lt;UL&gt;
&lt;LI&gt;For debugging support, we rely on the VS2008 environment &lt;/LI&gt;
&lt;LI&gt;You cannot install Visual Studio 2010 Beta1 on a computer with STM nor can you install STM.NET on a machine with VS2010 Beta 1 on it. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;x32-bit only (Windows XP and Vista were our tested platforms)&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We expect there might be some other limitations of the release that we didn’t discover in our test pass.&amp;nbsp; We will discuss these on our MSDN Forum.&lt;/P&gt;
&lt;P&gt;Please check out &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx" mce_href="http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx"&gt;STM.NET&lt;/A&gt; on the &lt;A href="http://msdn.microsoft.com/devlabs" mce_href="http://msdn.microsoft.com/devlabs"&gt;MSDN Devlabs&lt;/A&gt; today.&amp;nbsp; Tell us what you think on our forum. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9851515" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/stmteam/archive/tags/Transactional+Memory/default.aspx">Transactional Memory</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Failure+Atomicity/default.aspx">Failure Atomicity</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Transactions/default.aspx">Transactions</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Concurrency/default.aspx">Concurrency</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/STM.NET/default.aspx">STM.NET</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/STM/default.aspx">STM</category></item><item><title>Transactional Memory on Channel 9</title><link>http://blogs.msdn.com/stmteam/archive/2008/12/31/transactional-memory-on-channel-9.aspx</link><pubDate>Wed, 31 Dec 2008 03:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9257846</guid><dc:creator>yossi.levanoni</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/stmteam/comments/9257846.aspx</comments><wfw:commentRss>http://blogs.msdn.com/stmteam/commentrss.aspx?PostID=9257846</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;Dana and I have been talking&amp;nbsp;with &lt;A href="http://carmine.blogs.com/" mce_href="http://carmine.blogs.com/"&gt;Charles&lt;/A&gt; from &lt;A href="http://channel9.msdn.com/" mce_href="http://channel9.msdn.com/"&gt;channel 9&lt;/A&gt; about transactional memory. Please check out the &lt;A href="http://channel9.msdn.com/shows/Going+Deep/Software-Transactional-Memory-The-Current-State-of-the-Art/" mce_href="http://channel9.msdn.com/shows/Going+Deep/Software-Transactional-Memory-The-Current-State-of-the-Art/"&gt;video&lt;/A&gt;. We like to call it “the TM holiday special” :-)&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;Charles has also interviewed our&amp;nbsp;indefatigable QA-engineer-at-large Chris Dern on the novel concurrency testing techniques he and his buddies from MSR are discovering and applying. Check out the video &lt;A href="http://channel9.msdn.com/shows/Going+Deep/CHESS-An-Automated-Concurrency-Testing-Tool/" mce_href="http://channel9.msdn.com/shows/Going+Deep/CHESS-An-Automated-Concurrency-Testing-Tool/"&gt;here&lt;/A&gt;. I wish I had Chris' job! This is just too much fun...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;Last but not least we also have a video from our peers working on an actor/agent-based language called &lt;A href="http://channel9.msdn.com/shows/Going+Deep/Maestro-A-Managed-Domain-Specific-Language-For-Concurrent-Programming/" mce_href="http://channel9.msdn.com/shows/Going+Deep/Maestro-A-Managed-Domain-Specific-Language-For-Concurrent-Programming/"&gt;Maestro&lt;/A&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;Yours truly, wishing you a happy new year,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;--Yossi&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=2&gt;&lt;SPAN style="FONT-SIZE: 11pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9257846" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/stmteam/archive/tags/Transactional+Memory/default.aspx">Transactional Memory</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Channel+9/default.aspx">Channel 9</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Maestro/default.aspx">Maestro</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/CHESS/default.aspx">CHESS</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/stmteam/archive/tags/Concurrency/default.aspx">Concurrency</category></item></channel></rss>