| 1234567891011121314151617181920212223242526272829303132333435363738394041 | <?php/** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */namespace yii\mutex;use Closure;/** * Trait RetryAcquireTrait. * * @author Robert Korulczyk <robert@korulczyk.pl> * @internal * @since 2.0.16 */trait RetryAcquireTrait{    /**     * @var int Number of milliseconds between each try in [[acquire()]] until specified timeout times out.     * By default it is 50 milliseconds - it means that [[acquire()]] may try acquire lock up to 20 times per second.     * @since 2.0.16     */    public $retryDelay = 50;    private function retryAcquire($timeout, Closure $callback)    {        $start = microtime(true);        do {            if ($callback()) {                return true;            }            usleep($this->retryDelay * 1000);        } while (microtime(true) - $start < $timeout);        return false;    }}
 |