title: SwitchToThread vs Sleep(1)
body: <p>I'm wondering what's the actual difference between calling Thread.Sleep(1) and calling SwitchToThread (if we ignore that it's currently not exposed by the BCL).</p>
  
  <p>Joe Duffy mentions in <a href="http://joeduffyblog.com/2006/08/22/priorityinduced-starvation-why-sleep1-is-better-than-sleep0-and-the-windows-balance-set-manager/" rel="noreferrer">his post</a> that:</p>
  
  <blockquote>
    <p>"The kernel32!SwitchToThread API doesn't exhibit the problems that Sleep(0) and Sleep(1) do." (regarding the scheduler's behavior)</p>
  </blockquote>
  
  <p>Why won't Sleep behave exactly like SwitchToThread? Why this differentiation exist, and for what is it good for? (if at all..)</p>