original_string: public function unlock($key, $ownerid, $forceunlock = false) {
          if (array_key_exists($key, $this->locks)) {
              @unlink($this->locks[$key]);
              unset($this->locks[$key]);
              return true;
          } else if ($forceunlock) {
              $lockfile = $this->get_lock_file($key);
              if (file_exists($lockfile)) {
                  @unlink($lockfile);
              }
              return true;
          }
          // You cannot unlock a file you didn't lock.
          return false;
      }
code: public function unlock($key, $ownerid, $forceunlock = false) {
          if (array_key_exists($key, $this->locks)) {
              @unlink($this->locks[$key]);
              unset($this->locks[$key]);
              return true;
          } else if ($forceunlock) {
              $lockfile = $this->get_lock_file($key);
              if (file_exists($lockfile)) {
                  @unlink($lockfile);
              }
              return true;
          }
          // You cannot unlock a file you didn't lock.
          return false;
      }
code_tokens: public function unlock ( $ key , $ ownerid , $ forceunlock = false ) { if ( array_key_exists ( $ key , $ this -> locks ) ) { @ unlink ( $ this -> locks [ $ key ] ) ; unset ( $ this -> locks [ $ key ] ) ; return true ; } else if ( $ forceunlock ) { $ lockfile = $ this -> get_lock_file ( $ key ) ; if ( file_exists ( $ lockfile ) ) { @ unlink ( $ lockfile ) ; } return true ; } // You cannot unlock a file you didn't lock. return false ; }
docstring: Releases an acquired lock.
  
  For more details see {@link cache_lock::unlock()}
  
  @param string $key
  @param string $ownerid A unique identifier for the owner of this lock. Not used by default.
  @param bool $forceunlock If set to true the lock will be removed if it exists regardless of whether or not we own it.
  @return bool
docstring_tokens: Releases an acquired lock .