Push for multi-threaded server
Currently, the server is multi-process (via MPI) but single-threaded and does not keep connections alive (every RPC begins with a pair of MPI_Comm_accept
/MPI_Comm_connect
and ends with a MPI_Comm_disconnect
). This design was chosen in order to be able to ship a first version quickly, because prototyping revealed all tested MPI libraries not to support concurrent MPI_Comm_accept
and MPI_Recv
.
It would probably be better to keep connections alive and serve new connections in a separate thread. In order to do so, bug reports would probably have to be filed against all targeted MPI libraries.