In this paper we present an algorithm for solving the k mutual exclusion problem in a distributed system. Our algorithm is "Token Based", whereby a token IS passed among sites. Only sites that either receive the token with a non-zero semaphore or receive the token with a zero semaphore and later receive a release message from a previous site, are allowed to enter their critical sections. Attached to the token is a queue which lists the sites scheduled to receive the token and a general semaphore. In all cases except extremely light token request traffic, the number of messages per critical section execution can be expressed as a small constant. This constant approaches 3 in an extremely heavy token request environment.