title: Main differences between threading with shared memory and MPI?
body: <p>although I have been playing with pthreads, OpenMP, intel TBB, and threading in general for a while I still don't understand what is the main difference between a message passing interface implementation like OpenMP and a classic threading library it's still unclear to me.</p>
  
  <p>Assuming that writing all the boilerplate code for a threading pool it's not a problem in my case, and I'm using C++, the difference between this 2 technologies boils down to ... ?</p>
  
  <p>I'm also interested in operating with threads over the network while distributing tasks to all the connected machines.</p>
  
  <p>Right now I'm also not considering the limitations in terms of number of platforms supported by OpenMP/<a href="http://www.open-mpi.org/">OpenMPI</a> because I would like to understand just how this 2 concepts work.</p>