Notes:

MpiProcess

SyncRoot - This object is used in lock statements for whenever the fields of the process instance is being changed. Each process may only be modified by two threads; namely, (1) The process thread itself and (2) the runtime thread. Due to this, it's safe to expect that we can exit the lock w/o worrying about the process from executing another Mpi API call. e.g. when in the MpiWait or MpiBarrier calls.