title: IOCP thread vs threadpool to process messages
body: <p>When you're dealing with socket IO using BeginReceive/EndReceive, the callback is invoked by an IOCP thread.</p>
  
  <p>Once you're done receiving you need to process the data.</p>
  
  <ul>
  <li>Should you do it on the callback's calling thread?</li>
  <li>Or should you run the task using the ThreadPool.QueueUserWorkItem</li>
  </ul>
  
  <p>Normally samples do the work on the callback thread, which is a little bit confusing.</p>
  
  <p>If you're dealing with several hundred active connections, running the processing on the IOCP thread ends up with a process with hundreds of threads. Would ThreadPool help limiting the number of concurrent threads?</p>