This example performs the same data communication as the simple broadcast example ("Sharing data") but with the point-to-point operations.

Rings are useful for a variety of operations. One of the most common is in forcing operations to be performed sequentially. One process (typically process zero) creates a token (simply a small message). When it is done, it sends the token to the next process in the ring. Only the holder of the token is allowed to operate; all of the other processes wait for the token. This can be used, for example, to ensure that only one process at a time is accessing a file.

Rings are also useful for performing multiple, overlapping broadcasts, particularly when the data depends on previous broadcasts (this comes up in some algorithms for matrix factorization).