<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Channel 9 - The C++ Concurrency Runtime - Parallel Patterns Library</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Blogs/philpenn/concrtppl/RSS"></atom:link>
	<image>
		<url>http://ecn.channel9.msdn.com/o9/previewImages/100/479563_100x75.jpg</url>
		<title>Channel 9 - The C++ Concurrency Runtime - Parallel Patterns Library</title>
		<link></link>
	</image>
	<description>
The C&amp;#43;&amp;#43; Concurrency Runtime is new with Visual Studio 2010 and currently in beta. The runtime encapsulates and extends many new operating system features including NUMA resource locality and User-Mode-Scheduling.&amp;nbsp;

The Parallel Patterns Library (PPL) provides an imperative programming model that promotes scalability and ease-of-use for developing concurrent applications.&amp;nbsp; The PPL raises the level of abstraction between your application code and the underlying&amp;nbsp;thread/task
 scheduling&amp;nbsp;mechanisms by providing generic, type-safe algorithms and containers that act on data in parallel.&amp;nbsp; The PPL also enables you to develop applications that scale by providing alternatives to shared state. 
The PPL provides the following features: 


Task Parallelism: a mechanism to execute several work items (tasks) in parallel. 

Parallel algorithms: generic algorithms that act on collections of data in parallel. 

Parallel containers and objects: generic container types that provide safe concurrent access to their elements. 

By using PPL, you can introduce fine-grained parallelism without even having to manage a scheduler.&amp;nbsp;&amp;nbsp; You would use the Asynchronous Agents Library instead&amp;nbsp;to express&amp;nbsp;coarse-grained parallelism.

You&#39;ll want to subscribe to the 
Native Concurrency blog, find more resource and download&amp;nbsp;example code from 
Code Gallery.&amp;nbsp; 
</description>
	<link></link>
	<language>en</language>
	<pubDate>Fri, 24 May 2013 19:46:54 GMT</pubDate>
	<lastBuildDate>Fri, 24 May 2013 19:46:54 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: The C++ Concurrency Runtime - Parallel Patterns Library</title>
		<description>
			<![CDATA[
<p>What this example showed is that those same &quot;subgroup of&nbsp;senior specialists&quot;&nbsp;will be responsible for writing the bodies of the parallel for statements, to make sure that no race conditions sneak in. So, in the end, does this really solve the problem or just
 make it easy for people who don't know how to write concurrent code think that it is now easy to do so (with parallel_for)?</p>
<p>&nbsp;</p>
<p>Also, how will the PPL and all of the mumbo-jumbo (i.e., Concurrency Runtime)&nbsp;it sits on handle parellizing code in multiple concurrent processes? Or, are we supposed to, from now on, run only a single &quot;parallelized&quot; process&nbsp;on a&nbsp;multi-core host?</p>
<p>&nbsp;</p>
<p>posted by Corrector</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/philpenn/concrtppl#c633848654860000000</link>
		<pubDate>Mon, 03 Aug 2009 03:04:46 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/philpenn/concrtppl#c633848654860000000</guid>
		<dc:creator>Corrector</dc:creator>
	</item>
	<item>
		<title>Re: The C++ Concurrency Runtime - Parallel Patterns Library</title>
		<description>
			<![CDATA[
<p>Hi Corrector,</p>
<p>&nbsp;</p>
<p>Thanks for the comment!&nbsp;&nbsp; I apologize that I just noticed this on the blog.&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>I suppose that's part of what the industry, not just Microsoft, intends to solve...&nbsp;&nbsp; making the expression of parallelism easier and safer for every developer.&nbsp;&nbsp;
</p>
<p>&nbsp;</p>
<p>Of course,&nbsp;this demo is just introductory and not intended to address solution domain complexities in-depth.</p>
<p>&nbsp;</p>
<p>Parallel_for is simply a mechanism to allow the programmer to express concurrency more easily.&nbsp; It frees them from writing the plumbing-code that so often goes with concurrent code and maintaining it.&nbsp; So yes, it does lower the barrier to writing parallel
 code.&nbsp; We see this as a good thing.</p>
<p>&nbsp;</p>
<p>Does that mean that some programmers will write parallel code who should not be writing that code?&nbsp; Perhaps, but this is not the fault of the runtime system.&nbsp; This is a skill-development-problem and falls to development teams&nbsp;to solve, maybe through code
 inspection and design guidelines, for example.&nbsp; Potentially, tools can help with best practices (e.g. see the new VS2010 parallel performance profiler).&nbsp;
</p>
<p>&nbsp;</p>
<p>Our other option is simply to stop developing new features in existing applications or ask the users to put up with slower applications.</p>
<p>&nbsp;</p>
<p>The question of multi-process concurrency&nbsp;is interesting and there are tools and techniques that can be used to accomplish this (e.g. Windows HPC Server and the MSMPI SDK).&nbsp;&nbsp;&nbsp;We recommend starting with domain decomposition and implementing execution partitioning
 techniques that&nbsp;map onto the scope of the parallel computing problem.&nbsp;&nbsp;&nbsp;As you know, some computations simply can't be solved without multi-process or multi-computer parallel processing.&nbsp; However, the C&#43;&#43; Concurrency Runtime&nbsp;or .NET Parallel Extensions may
 still be significant&nbsp;components of even a distributed process solution.&nbsp;&nbsp; These technologies are specifically designed to express concurrency at the application scope and with an implementation that is highly optimized for resource management, shared state,
 and thread-level scalability.&nbsp;&nbsp; Even if multi-process scheduling and synchronization designs were added, the existing mechanisms would still apply and be necessary.</p>
<p>&nbsp;</p>
<p>- phil</p>
<p>&nbsp;</p>
<p>posted by philpenn</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/philpenn/concrtppl#c633857625360000000</link>
		<pubDate>Thu, 13 Aug 2009 12:15:36 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/philpenn/concrtppl#c633857625360000000</guid>
		<dc:creator>philpenn</dc:creator>
	</item>
	<item>
		<title>Re: The C++ Concurrency Runtime - Parallel Patterns Library</title>
		<description>
			<![CDATA[Good :)<p>posted by baby</p>]]>
		</description>
		<link>http://channel9.msdn.com/Blogs/philpenn/concrtppl#c634207687250000000</link>
		<pubDate>Wed, 22 Sep 2010 16:12:05 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Blogs/philpenn/concrtppl#c634207687250000000</guid>
		<dc:creator>baby</dc:creator>
	</item>
</channel>
</rss>