You should not instantiate this class directly. Use {@link Mutex::check()}.
Author: Markus Malkusch (markus@malkusch.de)
Beispiel #1
0
 /**
  * Performs a double-checked locking pattern.
  *
  * Call {@link DoubleCheckedLocking::then()} on the returned object.
  *
  * Example:
  * <code>
  * $mutex->check(function () use ($bankAccount, $amount) {
  *     return $bankAccount->getBalance() >= $amount;
  *
  * })->then(function () use ($bankAccount, $amount) {
  *     $bankAccount->withdraw($amount);
  * });
  * </code>
  *
  * @return DoubleCheckedLocking The double-checked locking pattern.
  */
 public function check(callable $check)
 {
     $doubleCheckedLocking = new DoubleCheckedLocking($this);
     $doubleCheckedLocking->setCheck($check);
     return $doubleCheckedLocking;
 }