Недостаточно блокировки , необходимо отправить данные другим процессам ( память в нераспределенной между процессами).
Для обмена данными между ВСЕМИ процессами используйте :
int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm )
так в вашем случае:
MPI_Bcast(&a, 1, MPI_INT, 0, MPI_COMM_WORLD);
здесь вы отправляете одно целое число, на которое указывает & процесс формы 0, всем остальным.
// MPI_Bcast - отправитель для корневого процесса и получатель для некорневых процессов
Вы также можете отправить некоторые данные в указанный процесс:
int MPI_Send( void *buf, int count, MPI_Datatype datatype, int dest,
int tag, MPI_Comm comm )
и затем получить по:
int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)