One way to remove potential and actual deadlocks is to use a system of tokens so that a philosopher must receive a token before attempting to eat. The number of available tokens must be less than the number of philosophers at the table. After a philosopher receives a token, he can attempt to eat in accordance with the rules of the table. After eating, each philosopher returns the token and repeats the process. The following pseudo-code shows the logic for each philosopher when using the token system.
while (there is still food on the table) { get token grab right fork grab left fork eat some food put down left fork put down right fork return token }
The following sections detail two different implementations for the system of tokens.