title: Parallel.For partitioning
body: <p>How is partitioning done for something like </p>
  
  <pre><code>Parallel.For(0, buffer.Length, (i)=&gt; buffer[i] = 0);
  </code></pre>
  
  <p>My assumption was that for an <code>n</code> core machine, work would be partitioned <code>n way</code> and <code>n threads</code> will carry out the work payload. Which means for example <code>buffer.Length = 100 and n = 4, each thread will get 0-24, 25-49, 50-74, 75-99</code> blocks. (100 element array is an example to illustrate partitioning, but please consider an array of millions of items.)</p>
  
  <p>Is this a fair assumption? Please discuss.</p>
  
  <p>I noticed that <code>Array.Clear(...)</code> would perform much faster in this specific scenario. How do you rationalize this?</p>