Patent ID: 8234646

Claim:
A method of implementing a mutual exclusion lock, the mutual exclusion lock capable of preventing at least one acquiring process from operating on at least one shared data object, the at least one acquiring process identified by at least one acquiring process ID, the mutual exclusion lock including at least one variable capable of storing the at least one acquiring process ID, wherein only the at least one acquiring process identified by the at least one acquiring process ID stored in the at least one variable can operate on the at least one shared data object, comprising the steps of: comparing the at least one variable and a clear value; if the at least one variable is equal to the clear value, storing the acquiring process ID in the at least one variable, operating on the at least one shared data object, and writing the clear value to the at least one variable; if the at least one variable is not equal to the clear value, querying a programming environment if at least one old process identified by at least one old process ID is dead, wherein the at least one old process ID is equal to the at least one variable, if the at least one old process is dead, comparing the at least one variable and the at least one old process ID, if the at least one variable is equal to the at least one old process ID, storing the acquiring process ID in the at least one variable, performing a recovery mechanism to recover the at least one data object to a consistent state, operating on the at least one shared data object, resetting the recovery mechanism, and writing the clear value to the at least one variable; wherein the steps of comparing the at least one variable and the clear value and storing the at least one acquiring process ID in the at least one variable if the at least one variable is equal to the clear value are performed atomically; and wherein the steps of comparing the at least one variable and the at least one old process ID and storing the at least one acquiring process ID in the at least one variable if the at least one old process is dead are performed atomically.