title: AsParallel() or async/await
body: <p>Let's suppose to do a method <code>CountString</code> that, given an array of strings and a int, returns the number of strings whose length is greater than that int.
  If I have to take advantage as far as possible of multicore hardware, is it enough to do:</p>
  
  <pre><code>public int CountString(string[] s, int i) 
  {
    return s.AsParallel().Count( res =&gt; res.length &gt; i);
  }
  </code></pre>
  
  <p>or have i got to use somehow Tasks or even to mix task and PLinq??</p>
  
  <p>It has to be considered only a simple example, i know this method not affects too much the hardware performance.</p>
  
  <p>I'm wondering if it is better to do so, using <code>AsParallel()</code>, or if it is better to declare the method <code>async</code> and use the <code>await</code> (even if i don't know how) in the method body.</p>