In a nutshell
Instead of locks, this method stamps each transaction with a start-time number and makes every conflicting access obey that order. Each data item remembers when it was last read and last written; an operation that would break timestamp order is rejected, aborting and restarting that transaction with a fresh stamp. The result is serializable and can never deadlock.