A LOCK
statement has the form:
LOCK mu DO S ENDwhere
S
is a statement and mu
is an expression. It is
equivalent to:
VAR m := mu; BEGIN Thread.Acquire(m); TRY S FINALLY Thread.Release(m) END ENDwhere
m
stands for a variable that does not occur in S
.