Modula-3: Lock statements

# Lock

A `LOCK` statement has the form:

        LOCK mu DO S END

where `S` is a statement and `mu` is an expression. It is equivalent to:

        WITH m = mu DO
          Thread.Acquire(m);
          TRY S FINALLY Thread.Release(m) END
        END

where `m` stands for a variable that does not occur in `S`.

    Last modified on Wed Apr  3 09:39:03 PST 1996 by heydon
         modified on Mon Apr 18 14:04:17 PDT 1994 by kalsow