static void CurlLock(CURL *pHandle, curl_lock_data Data, curl_lock_access Access, void *pUser) { (void)pHandle; (void)Access; (void)pUser; lock_wait(gs_aLocks[GetLockIndex(Data)]); }
// Lock index idx. inline bool TryLock(K idx, Unlocker<MUTEX>* unlocker) { int lock_idx = GetLockIndex(idx); if (lock_pool_[lock_idx].try_lock()) { unlocker->SetLock(&lock_pool_[lock_idx]); return true; } return false; }
// Unlock. inline void Unlock(K idx) { int lock_idx = GetLockIndex(idx); lock_pool_[lock_idx].unlock(); }
// Lock index idx. inline bool TryLock(K idx) { int lock_idx = GetLockIndex(idx); return lock_pool_[lock_idx].try_lock(); }
// Lock index idx, and let unlocker unlock it later on. inline void Lock(K idx, Unlocker<MUTEX>* unlocker) { int lock_idx = GetLockIndex(idx); lock_pool_[lock_idx].lock(); unlocker->SetLock(&lock_pool_[lock_idx]); }
static void CurlUnlock(CURL *pHandle, curl_lock_data Data, void *pUser) { (void)pHandle; (void)pUser; lock_unlock(gs_aLocks[GetLockIndex(Data)]); }