In MPI, each target process maintains a list of communicators that it is a member of, and has a message queue for each communicator. In MPISIM, each host process maintains a list of communicators that any of its threads is a member of, and on each communicator, maintains a message queue for each local member thread. Communicator message queues only contain data messages since acknowledgements can and are always matched immediately with the request list of the thread. Communicator message queues are implemented as linked lists ordered by send simulation timestamp. Also associated with each communicator are variables that contain the message EIT and the acknowledgement EIT and two arrays that contain the message EOTs and acknowledgement EOTs of all member threads (local and remote). As mentioned earlier, ECOTs are associated with LPs and not communicators.