<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Reed Copsey, Jr.</title>
	<atom:link href="http://reedcopsey.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://reedcopsey.com</link>
	<description>Thoughts on C#, WPF, .NET, and programming for Scientific Visualization</description>
	<lastBuildDate>Tue, 09 Mar 2010 20:06:20 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-876</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Tue, 09 Mar 2010 20:06:20 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-876</guid>
		<description>Jesse:

The operating system will not change the affinity masks, ever.  These exist so that you can explicitly tell the OS (which is now free to ignore this anyways) which processors to use.  The only place where this would happen without your knowledge would be if a library set this, or if the user, as an administrator, overrides the affinity masks via the task manager or a similar tool (neither of which is likely).  Personally, I think this is overkill unless you are explicitly messing with the affinity masks (which I don&#039;t recommend doing...)</description>
		<content:encoded><![CDATA[<p>Jesse:</p>
<p>The operating system will not change the affinity masks, ever.  These exist so that you can explicitly tell the OS (which is now free to ignore this anyways) which processors to use.  The only place where this would happen without your knowledge would be if a library set this, or if the user, as an administrator, overrides the affinity masks via the task manager or a similar tool (neither of which is likely).  Personally, I think this is overkill unless you are explicitly messing with the affinity masks (which I don&#8217;t recommend doing&#8230;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by Jesse C. Slicer</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-875</link>
		<dc:creator>Jesse C. Slicer</dc:creator>
		<pubDate>Tue, 09 Mar 2010 19:21:23 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-875</guid>
		<description>To be sure *I* wouldn&#039;t be changing my program&#039;s affinity masks, but there&#039;s no guarantees that the .NET runtime (or even operating system) won&#039;t do that to the running program if it feels the need to.</description>
		<content:encoded><![CDATA[<p>To be sure *I* wouldn&#8217;t be changing my program&#8217;s affinity masks, but there&#8217;s no guarantees that the .NET runtime (or even operating system) won&#8217;t do that to the running program if it feels the need to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-865</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Mon, 08 Mar 2010 19:24:40 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-865</guid>
		<description>Jesse:

This will be the same as Environment.ProcessorCount, provided you didn&#039;t explicitly change your processor affinity masks for your application.  That being said, in general, I usually recommend leaving processor affinity alone, especially on modern operating systems (Vista &amp; esp. W7).  

The Windows process scheduler does a very good job of handling this...</description>
		<content:encoded><![CDATA[<p>Jesse:</p>
<p>This will be the same as Environment.ProcessorCount, provided you didn&#8217;t explicitly change your processor affinity masks for your application.  That being said, in general, I usually recommend leaving processor affinity alone, especially on modern operating systems (Vista &#038; esp. W7).  </p>
<p>The Windows process scheduler does a very good job of handling this&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by Jesse C. Slicer</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-863</link>
		<dc:creator>Jesse C. Slicer</dc:creator>
		<pubDate>Mon, 08 Mar 2010 17:45:52 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-863</guid>
		<description>Reed,

While Environment.ProcessorCount does a good job at giving you the # of processors in the system, it will *not* give you the number of processors allocated to your process (which may change while the process is running!).  I use this little chunk of code to give me the true number of cores my process can use:

// 
// Copyright (c) 2008 All Rights Reserved
// 
// Jesse C. Slicer
// jslicer@spamcop.net
// 2008-08-05
// Part of the Aesop.Diagnostics.dll assembly.

namespace Aesop.Diagnostics
{
    #region Using Directives

    // System namespaces
    using System;
    using System.Diagnostics;

    #endregion

    #region Class Definition : ProcessInfo

    /// 
    /// Privides a single property which gets the number of processor threads
    /// available to the currently executing process.
    /// 
    internal static class ProcessInfo
    {
        #region Internal Static Properties

        /// 
        /// Gets the number of processors.
        /// 
        /// The number of processors.
        internal static uint NumberOfProcessorThreads
        {
            get
            {
                using (Process currentProcess = Process.GetCurrentProcess())
                {
                    uint result;

                    if (currentProcess == null)
                    {
                        result = (uint)Environment.ProcessorCount;
                    }
                    else
                    {
                        const uint BitsPerByte = 8;
                        uint loop = BitsPerByte * sizeof(uint);
                        uint processAffinityMask =
                           (uint)currentProcess.ProcessorAffinity;

                        result = 0;
                        while (loop != 0)
                        {
                            --loop;
                            result += processAffinityMask &amp; 1;
                            processAffinityMask &gt;&gt;= 1;
                        }
                    }

                    return (result == 0) ? 1 : result;
                }
            }
        }

        #endregion
    }

    #endregion
}</description>
		<content:encoded><![CDATA[<p>Reed,</p>
<p>While Environment.ProcessorCount does a good job at giving you the # of processors in the system, it will *not* give you the number of processors allocated to your process (which may change while the process is running!).  I use this little chunk of code to give me the true number of cores my process can use:</p>
<p>//<br />
// Copyright (c) 2008 All Rights Reserved<br />
//<br />
// Jesse C. Slicer<br />
// <a href="mailto:jslicer@spamcop.net">jslicer@spamcop.net</a><br />
// 2008-08-05<br />
// Part of the Aesop.Diagnostics.dll assembly.</p>
<p>namespace Aesop.Diagnostics<br />
{<br />
    #region Using Directives</p>
<p>    // System namespaces<br />
    using System;<br />
    using System.Diagnostics;</p>
<p>    #endregion</p>
<p>    #region Class Definition : ProcessInfo</p>
<p>    ///<br />
    /// Privides a single property which gets the number of processor threads<br />
    /// available to the currently executing process.<br />
    ///<br />
    internal static class ProcessInfo<br />
    {<br />
        #region Internal Static Properties</p>
<p>        ///<br />
        /// Gets the number of processors.<br />
        ///<br />
        /// The number of processors.<br />
        internal static uint NumberOfProcessorThreads<br />
        {<br />
            get<br />
            {<br />
                using (Process currentProcess = Process.GetCurrentProcess())<br />
                {<br />
                    uint result;</p>
<p>                    if (currentProcess == null)<br />
                    {<br />
                        result = (uint)Environment.ProcessorCount;<br />
                    }<br />
                    else<br />
                    {<br />
                        const uint BitsPerByte = 8;<br />
                        uint loop = BitsPerByte * sizeof(uint);<br />
                        uint processAffinityMask =<br />
                           (uint)currentProcess.ProcessorAffinity;</p>
<p>                        result = 0;<br />
                        while (loop != 0)<br />
                        {<br />
                            &#8211;loop;<br />
                            result += processAffinityMask &amp; 1;<br />
                            processAffinityMask &gt;&gt;= 1;<br />
                        }<br />
                    }</p>
<p>                    return (result == 0) ? 1 : result;<br />
                }<br />
            }<br />
        }</p>
<p>        #endregion<br />
    }</p>
<p>    #endregion<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 1, Decomposition by Parallelism in .NET &#8211; Part 12, More on Task Decomposition : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/01/19/parallelism-in-net-part-1-decomposition/#comment-832</link>
		<dc:creator>Parallelism in .NET &#8211; Part 12, More on Task Decomposition : Reed Copsey, Jr.</dc:creator>
		<pubDate>Sat, 06 Mar 2010 01:09:58 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/19/parallelism-in-net-part-1-decomposition/#comment-832</guid>
		<description>[...] tasks can be decomposed using a Data Decomposition approach, but often, this is not appropriate.&#160; Frequently, [...]</description>
		<content:encoded><![CDATA[<p>[...] tasks can be decomposed using a Data Decomposition approach, but often, this is not appropriate.&#160; Frequently, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by James Alexander</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-824</link>
		<dc:creator>James Alexander</dc:creator>
		<pubDate>Thu, 04 Mar 2010 15:58:04 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-824</guid>
		<description>Great article, very clear and to the point.</description>
		<content:encoded><![CDATA[<p>Great article, very clear and to the point.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 1, Decomposition by Sachin</title>
		<link>http://reedcopsey.com/2010/01/19/parallelism-in-net-part-1-decomposition/#comment-817</link>
		<dc:creator>Sachin</dc:creator>
		<pubDate>Wed, 03 Mar 2010 20:29:12 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/19/parallelism-in-net-part-1-decomposition/#comment-817</guid>
		<description>Great article. I was looking for good and simple artilce on PLINQ and you really made a simple and effective article... Its going to be interesting to read this series.</description>
		<content:encoded><![CDATA[<p>Great article. I was looking for good and simple artilce on PLINQ and you really made a simple and effective article&#8230; Its going to be interesting to read this series.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Better User and Developer Experiences &#8211; From Windows Forms to WPF with MVVM: Part 7, MVVM by zamesking</title>
		<link>http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-786</link>
		<dc:creator>zamesking</dc:creator>
		<pubDate>Sun, 28 Feb 2010 01:45:48 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-786</guid>
		<description>Reed,

Thanks for the reply, but I can not open the link in my country. Would you please copy the text, and send it to my mail box?</description>
		<content:encoded><![CDATA[<p>Reed,</p>
<p>Thanks for the reply, but I can not open the link in my country. Would you please copy the text, and send it to my mail box?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Better User and Developer Experiences &#8211; From Windows Forms to WPF with MVVM: Part 7, MVVM by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-780</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Sat, 27 Feb 2010 20:23:41 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-780</guid>
		<description>zamesking,

Here&#039;s an article describing one approach.  Using SelectedItems is tricky, though.

http://bit.ly/alNF72

-Reed</description>
		<content:encoded><![CDATA[<p>zamesking,</p>
<p>Here&#8217;s an article describing one approach.  Using SelectedItems is tricky, though.</p>
<p><a href="http://bit.ly/alNF72" rel="nofollow">http://bit.ly/alNF72</a></p>
<p>-Reed</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Better User and Developer Experiences &#8211; From Windows Forms to WPF with MVVM: Part 7, MVVM by zamesking</title>
		<link>http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-775</link>
		<dc:creator>zamesking</dc:creator>
		<pubDate>Sat, 27 Feb 2010 02:45:15 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/06/better-user-and-developer-experiences-from-windows-forms-to-wpf-with-mvvm-part-7-mvvm/#comment-775</guid>
		<description>Great stuff, I got time to read your mvvm articles after my vocation. reed, I got a problem at hand now, I can not find an elegant solution for how to two-way bind the selectedItems in ListBox to the datasource in my viewmodel. Did you have any suggestions?</description>
		<content:encoded><![CDATA[<p>Great stuff, I got time to read your mvvm articles after my vocation. reed, I got a problem at hand now, I can not find an elegant solution for how to two-way bind the selectedItems in ListBox to the datasource in my viewmodel. Did you have any suggestions?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke by Parallelism in .NET – Part 11, Divide and Conquer via Parallel … Get Pivot</title>
		<link>http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-773</link>
		<dc:creator>Parallelism in .NET – Part 11, Divide and Conquer via Parallel … Get Pivot</dc:creator>
		<pubDate>Sat, 27 Feb 2010 02:01:13 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/26/parallelism-in-net-part-11-divide-and-conquer-via-parallel-invoke/#comment-773</guid>
		<description>[...] here: Parallelism in .NET – Part 11, Divide and Conquer via Parallel &#8230;          By pivot &#124; category: pivot, pivot point &#124; tags: around-the-pivot, each-side, elements, [...]
</description>
		<content:encoded><![CDATA[<p>[...] here: Parallelism in .NET – Part 11, Divide and Conquer via Parallel &#8230;          By pivot | category: pivot, pivot point | tags: around-the-pivot, each-side, elements, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 5, Partitioning of Work by Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/01/26/parallelism-in-net-part-5-partitioning-of-work/#comment-772</link>
		<dc:creator>Parallelism in .NET &#8211; Part 11, Divide and Conquer via Parallel.Invoke : Reed Copsey, Jr.</dc:creator>
		<pubDate>Sat, 27 Feb 2010 00:00:46 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/26/parallelism-in-net-part-5-partitioning-of-work/#comment-772</guid>
		<description>[...] standpoint.&#160; Since we’re dividing up the total work in the algorithm, we have an obvious, built-in partitioning scheme.&#160; Once partitioned, the data can be worked upon independently, so there is good, clean [...]</description>
		<content:encoded><![CDATA[<p>[...] standpoint.&#160; Since we’re dividing up the total work in the algorithm, we have an obvious, built-in partitioning scheme.&#160; Once partitioned, the data can be worked upon independently, so there is good, clean [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on From Windows Forms to WPF with MVVM by Coding Blog &#124; Reed Copsey, Jr presented Windows Forms to WPF with MVVM at last Seattle DOT Net User Group Meeting</title>
		<link>http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/#comment-740</link>
		<dc:creator>Coding Blog &#124; Reed Copsey, Jr presented Windows Forms to WPF with MVVM at last Seattle DOT Net User Group Meeting</dc:creator>
		<pubDate>Fri, 19 Feb 2010 06:48:17 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/?page_id=187#comment-740</guid>
		<description>[...] Reed was kind enough to publish&#160;his slides and samples: http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/ [...]

</description>
		<content:encoded><![CDATA[<p>[...] Reed was kind enough to publish&nbsp;his slides and samples: <a href="http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/" rel="nofollow">http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 9, Configuration in PLINQ and TPL by Parallelism in .NET &#8211; Part 10, Cancellation in PLINQ and the Parallel class : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/02/11/parallelism-in-net-part-9-configuration-in-plinq-and-tpl/#comment-738</link>
		<dc:creator>Parallelism in .NET &#8211; Part 10, Cancellation in PLINQ and the Parallel class : Reed Copsey, Jr.</dc:creator>
		<pubDate>Thu, 18 Feb 2010 01:35:57 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/02/11/parallelism-in-net-part-9-configuration-in-plinq-and-tpl/#comment-738</guid>
		<description>[...] the same cancellation model, as well.&#160; Here, we supply our CancellationToken as part of the configuration.&#160; The ParallelOptions class contains a property for the CancellationToken.&#160; This allows [...]</description>
		<content:encoded><![CDATA[<p>[...] the same cancellation model, as well.&#160; Here, we supply our CancellationToken as part of the configuration.&#160; The ParallelOptions class contains a property for the CancellationToken.&#160; This allows [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 3, Imperative Data Parallelism: Early Termination by Parallelism in .NET &#8211; Part 10, Cancellation in PLINQ and the Parallel class : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/01/22/parallelism-in-net-part-3-imperative-data-parallelism-early-termination/#comment-737</link>
		<dc:creator>Parallelism in .NET &#8211; Part 10, Cancellation in PLINQ and the Parallel class : Reed Copsey, Jr.</dc:creator>
		<pubDate>Thu, 18 Feb 2010 01:35:38 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/22/parallelism-in-net-part-3-imperative-data-parallelism-early-termination/#comment-737</guid>
		<description>[...] its typically a good practice to allow that routine to be cancelled.&#160; I previously discussed terminating a parallel loop from within, but have not demonstrated how a routine can be cancelled from the caller’s perspective.&#160; [...]</description>
		<content:encoded><![CDATA[<p>[...] its typically a good practice to allow that routine to be cancelled.&#160; I previously discussed terminating a parallel loop from within, but have not demonstrated how a routine can be cancelled from the caller’s perspective.&#160; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 4, Imperative Data Parallelism: Aggregation by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-732</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Mon, 15 Feb 2010 23:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-732</guid>
		<description>I agree, Naim.  The TPL is very nicely designed, once you understand how it works.</description>
		<content:encoded><![CDATA[<p>I agree, Naim.  The TPL is very nicely designed, once you understand how it works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 4, Imperative Data Parallelism: Aggregation by Naim</title>
		<link>http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-731</link>
		<dc:creator>Naim</dc:creator>
		<pubDate>Mon, 15 Feb 2010 17:26:02 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-731</guid>
		<description>Great article! I like the way it&#039;s been done, even the final action has been made part of the Parallel.ForEach call :)</description>
		<content:encoded><![CDATA[<p>Great article! I like the way it&#8217;s been done, even the final action has been made part of the Parallel.ForEach call <img src='http://reedcopsey.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on From Windows Forms to WPF with MVVM by uberVU - social comments</title>
		<link>http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/#comment-725</link>
		<dc:creator>uberVU - social comments</dc:creator>
		<pubDate>Sat, 13 Feb 2010 18:54:16 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/?page_id=187#comment-725</guid>
		<description>&lt;strong&gt;Social comments and analytics for this post...&lt;/strong&gt;

This post was mentioned on Twitter by Caspar_Kleijne: From Windows Forms to WPF with MVVM http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/ #wpf #csharp...
</description>
		<content:encoded><![CDATA[<p><strong>Social comments and analytics for this post&#8230;</strong></p>
<p>This post was mentioned on Twitter by Caspar_Kleijne: From Windows Forms to WPF with MVVM <a href="http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/" rel="nofollow">http://reedcopsey.com/talks/from-windows-forms-to-wpf-with-mvvm/</a> #wpf #csharp&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Implementing Parallel Patterns in .NET by uberVU - social comments</title>
		<link>http://reedcopsey.com/talks/implementing-parallel-patterns-in-net/#comment-721</link>
		<dc:creator>uberVU - social comments</dc:creator>
		<pubDate>Sat, 13 Feb 2010 08:24:50 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/?page_id=184#comment-721</guid>
		<description>&lt;strong&gt;Social comments and analytics for this post...&lt;/strong&gt;

This post was mentioned on Twitter by Caspar_Kleijne: Implementing Parallel Patterns in .NET http://reedcopsey.com/talks/implementing-parallel-patterns-in-net/ #csharp #Parallel...
</description>
		<content:encoded><![CDATA[<p><strong>Social comments and analytics for this post&#8230;</strong></p>
<p>This post was mentioned on Twitter by Caspar_Kleijne: Implementing Parallel Patterns in .NET <a href="http://reedcopsey.com/talks/implementing-parallel-patterns-in-net/" rel="nofollow">http://reedcopsey.com/talks/implementing-parallel-patterns-in-net/</a> #csharp #Parallel&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Unusual uses of ExpandoObject in C# 4 by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2009/11/06/unusual-uses-of-expandoobject-in-c-4/#comment-720</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Fri, 12 Feb 2010 22:09:22 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/?p=86#comment-720</guid>
		<description>Alexandra -

Happy to hear this is now documented!  Thanks for the update.

-Reed</description>
		<content:encoded><![CDATA[<p>Alexandra -</p>
<p>Happy to hear this is now documented!  Thanks for the update.</p>
<p>-Reed</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Unusual uses of ExpandoObject in C# 4 by Alexandra Rusina</title>
		<link>http://reedcopsey.com/2009/11/06/unusual-uses-of-expandoobject-in-c-4/#comment-719</link>
		<dc:creator>Alexandra Rusina</dc:creator>
		<pubDate>Fri, 12 Feb 2010 21:46:42 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/?p=86#comment-719</guid>
		<description>Hi Reed,

Thanks for the article!
And just FYI, the documentation for this feature became available with the last documentation update for VS 2010 RC.
http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(VS.100).aspx</description>
		<content:encoded><![CDATA[<p>Hi Reed,</p>
<p>Thanks for the article!<br />
And just FYI, the documentation for this feature became available with the last documentation update for VS 2010 RC.<br />
<a href="http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(VS.100).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(VS.100).aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 2, Simple Imperative Data Parallelism by Parallelism in .NET &#8211; Part 9, Configuration in PLINQ and TPL : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/01/20/parallelism-in-net-part-2-simple-imperative-data-parallelism/#comment-702</link>
		<dc:creator>Parallelism in .NET &#8211; Part 9, Configuration in PLINQ and TPL : Reed Copsey, Jr.</dc:creator>
		<pubDate>Fri, 12 Feb 2010 01:22:11 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/20/parallelism-in-net-part-2-simple-imperative-data-parallelism/#comment-702</guid>
		<description>[...] We configure the Parallel class by setting the ParallelOptions.MaxDegreeOfParallelism property.&#160; For example, let’s revisit one of the simple data parallel examples from Part 2: [...]</description>
		<content:encoded><![CDATA[<p>[...] We configure the Parallel class by setting the ParallelOptions.MaxDegreeOfParallelism property.&#160; For example, let’s revisit one of the simple data parallel examples from Part 2: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 6, Declarative Data Parallelism by Parallelism in .NET &#8211; Part 9, Configuration in PLINQ and TPL : Reed Copsey, Jr.</title>
		<link>http://reedcopsey.com/2010/01/26/parallelism-in-net-part-6-declarative-data-parallelism/#comment-701</link>
		<dc:creator>Parallelism in .NET &#8211; Part 9, Configuration in PLINQ and TPL : Reed Copsey, Jr.</dc:creator>
		<pubDate>Fri, 12 Feb 2010 01:13:09 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/26/parallelism-in-net-part-6-declarative-data-parallelism/#comment-701</guid>
		<description>[...] Let’s revisit our declarative data parallelism sample from Part 6: [...]</description>
		<content:encoded><![CDATA[<p>[...] Let’s revisit our declarative data parallelism sample from Part 6: [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 4, Imperative Data Parallelism: Aggregation by <img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</title>
		<link>http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-693</link>
		<dc:creator><img src='http://reedcopsey.com/blog/wp-content/plugins/rpx/images/openid.png'/> Reed</dc:creator>
		<pubDate>Fri, 05 Feb 2010 17:22:08 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-693</guid>
		<description>Basically, yes, I believe this is (generally) what&#039;s happening underneath.  Your &quot;local state&quot; variable is actually being stored in a ThreadLocal&lt;TLocal&gt;, which is then used in each iteration (value passed into state, returned, and reset to the local thread state).  When you do the final delegate, you are passed the accumulated results of the ThreadLocal variable, which you can then use to do your aggregation.  Finally, the ThreadLocal&lt;T&gt; is disposed of, cleaning it up.

Without doing this, you&#039;d need to either add locking, or put in some form of Dictionary&lt;Thread, TLocal&gt; object that could be used to store the local state - either of which would add quite a bit of contention, and slow things down.</description>
		<content:encoded><![CDATA[<p>Basically, yes, I believe this is (generally) what&#8217;s happening underneath.  Your &#8220;local state&#8221; variable is actually being stored in a ThreadLocal<tlocal>, which is then used in each iteration (value passed into state, returned, and reset to the local thread state).  When you do the final delegate, you are passed the accumulated results of the ThreadLocal variable, which you can then use to do your aggregation.  Finally, the ThreadLocal<t> is disposed of, cleaning it up.</p>
<p>Without doing this, you&#8217;d need to either add locking, or put in some form of Dictionary
<thread , TLocal> object that could be used to store the local state &#8211; either of which would add quite a bit of contention, and slow things down.</thread></t></tlocal></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Parallelism in .NET &#8211; Part 4, Imperative Data Parallelism: Aggregation by Jeff Sternal</title>
		<link>http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-692</link>
		<dc:creator>Jeff Sternal</dc:creator>
		<pubDate>Fri, 05 Feb 2010 17:21:48 +0000</pubDate>
		<guid isPermaLink="false">http://reedcopsey.com/2010/01/22/parallelism-in-net-part-4-imperative-data-parallelism-aggregation/#comment-692</guid>
		<description>&quot;In a world without ThreadLocal, .NET would need a factory method to create an object instance to host the aggregation delegate, which would be significantly more cumbersome.&quot;

I should have written &quot;to host the aggregation delegate *and maintain a per-thread accumulator variable*, which would be significantly more cumbersome.&quot;</description>
		<content:encoded><![CDATA[<p>&#8220;In a world without ThreadLocal, .NET would need a factory method to create an object instance to host the aggregation delegate, which would be significantly more cumbersome.&#8221;</p>
<p>I should have written &#8220;to host the aggregation delegate *and maintain a per-thread accumulator variable*, which would be significantly more cumbersome.&#8221;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
 