# MPI One-sided communication **One-sided communication** (RMA) lets processes access remote memory directly. `MPI_Win_create` exposes a window; other processes read with `MPI_Get` or write with `MPI_Put`. ```c int val = (rank == 0) ? 42 : 0; MPI_Win win; MPI_Win_create(&val, sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win); MPI_Win_fence(0, win); if (rank == 1) MPI_Get(&val, 1, MPI_INT, 0, 0, 1, MPI_INT, win); // rank 1 reads rank 0's val MPI_Win_fence(0, win); // val on rank 1 is now 42 MPI_Win_free(&win); ``` `MPI_Win_fence` acts as a collective barrier that opens and closes access epochs. `MPI_Accumulate` is an atomic RMA update that applies an MPI operator rather than simply overwriting. Finer-grained passive-target synchronisation is possible with `MPI_Win_lock` and `MPI_Win_unlock`, where the target process does not participate at all.