Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.

For information on migrating to InterSystems IRIS, see Why Migrate to InterSystems IRIS?

UNLOCK

Releases a process lock.

Synopsis

UNLOCK expression

Arguments

expression A number or string, or an expression that evaluates to a number or string specifying an existing lock to be unlocked.

Description

The UNLOCK statement releases a process lock on expression that was obtained by a LOCK statement. Each time a lock is obtained on an expression a lock count is incremented. UNLOCK decrements this count. Only when the lock count falls to zero will the logical lock be released. For this reason, you should balance each successful call to LOCK with a corresponding call to UNLOCK.

Unlike READU locks, process locks set in a program are not released automatically when the program terminates. The lock belongs to the process, and persists for the life of the process, unless unlocked explicitly.

Commonly, expression evaluates to an integer in the range 0 through 64. However, in Caché any number or string may be specified as a logical lock. UNLOCK "" is equivalent to UNLOCK 0.

Examples

The following example uses the LOCK statement to obtain a logical lock on an expression, and then uses the UNLOCK function to release the logical lock. Note that because the lock on a was taken twice, it must be unlocked twice.

a=45
LOCK a THEN PRINT "Got the lock"
  ELSE PRINT "Couldn't get the lock"
LOCK a THEN PRINT "Got the lock again"
  ELSE PRINT "Couldn't get the lock"
  .
  .
  .
  UNLOCK a
  UNLOCK a

See Also

Feedback