Same name in this branch
  1. 6.x includes/lock.inc \lock_wait()
  2. 6.x includes/lock-install.inc \lock_wait()
Same name and namespace in other branches
  1. 7.x includes/lock.inc \lock_wait()

Wait for a lock to be available.

This function may be called in a request that fails to acquire a desired lock. This will block further execution until the lock is available or the specified delay in seconds is reached. This should not be used with locks that are acquired very frequently, since the lock is likely to be acquired again by a different request during the sleep().

Parameters

$name: The name of the lock.

$delay: The maximum number of seconds to wait, as an integer.

Return value

TRUE if the lock holds, FALSE if it is available.

Related topics

3 calls to lock_wait()
menu_rebuild in includes/menu.inc
(Re)populate the database tables used by various menu functions.
module_rebuild_cache in includes/module.inc
Rebuild the database cache of module files.
system_theme_data in modules/system/system.module
Collect data about all currently available themes.

File

includes/lock.inc, line 182
A database-mediated implementation of a locking mechanism.

Code

function lock_wait($name, $delay = 30) {
  while ($delay--) {

    // This function should only be called by a request that failed to get a
    // lock, so we sleep first to give the parallel request a chance to finish
    // and release the lock.
    sleep(1);
    if (lock_may_be_available($name)) {

      // No longer need to wait.
      return FALSE;
    }
  }

  // The caller must still wait longer to get the lock.
  return TRUE;
}