This thesis studies the problems of implementing the handshake mechanisms for communicating processes embedded in concurrent programming languages, on a distributed environment. Two kinds of handshakes are considered: two-way rendezvous and multiway rendezvous. Multiway rendezvous allows an arbitrary number of processes to be synchronized in a common handshake, while two-way rendezvous makes synchronization between two processes. The main task in the implementation of the handshakes is global nondeterministic selection that is determined through the distributed coordinations of the concerned processes. Fairness is an important issue in the nondeterministic selections. This thesis discusses the fairness issue as a logical property of the implementation, especially in case of multiway rendezvous. A distributed implementation of the two-way rendezvous is proposed. The scheme exploits the dynamic system information by employing the broadcasting mechanism of the query message instead of individual pairwise inquires. Hence, the new scheme exhibits better response time than the previous approaches even with the increased message complexity. This thesis also proposes a new scheme for synchronizing multiple processes in common handshakes. The new scheme can ensure either weak, strong, or conspiracy-safe fairness among handshakes. It make use of a transformation that chooses one among the processes in each multiway rendezvous as the master of the others. It uses the static dependency information among handshakes as well as the dynamic system information. As a result, the new scheme reduces the message complexity and increases the amount of concurrency. Also it shows good response time.