本文整理汇总了C++中LockManager::downgrade方法的典型用法代码示例。如果您正苦于以下问题:C++ LockManager::downgrade方法的具体用法?C++ LockManager::downgrade怎么用?C++ LockManager::downgrade使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LockManager
的用法示例。
在下文中一共展示了LockManager::downgrade方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resId
TEST(LockManager, Downgrade) {
LockManager lockMgr;
const ResourceId resId(RESOURCE_COLLECTION, std::string("TestDB.collection"));
LockState locker1;
TrackingLockGrantNotification notify1;
LockRequest request1;
request1.initNew(&locker1, ¬ify1);
ASSERT(LOCK_OK == lockMgr.lock(resId, &request1, MODE_X));
LockState locker2;
TrackingLockGrantNotification notify2;
LockRequest request2;
request2.initNew(&locker2, ¬ify2);
ASSERT(LOCK_WAITING == lockMgr.lock(resId, &request2, MODE_S));
ASSERT(request2.recursiveCount == 1);
lockMgr.downgrade(&request1, MODE_S);
ASSERT(notify2.numNotifies == 1);
ASSERT(request2.recursiveCount == 1);
lockMgr.unlock(&request1);
ASSERT(request1.recursiveCount == 0);
lockMgr.unlock(&request2);
ASSERT(request2.recursiveCount == 0);
}
示例2: resId
TEST(LockManager, Downgrade) {
LockManager lockMgr;
const ResourceId resId(RESOURCE_COLLECTION, std::string("TestDB.collection"));
MMAPV1LockerImpl locker1;
LockRequestCombo request1(&locker1);
ASSERT(LOCK_OK == lockMgr.lock(resId, &request1, MODE_X));
MMAPV1LockerImpl locker2;
LockRequestCombo request2(&locker2);
ASSERT(LOCK_WAITING == lockMgr.lock(resId, &request2, MODE_S));
// Downgrade the X request to S
lockMgr.downgrade(&request1, MODE_S);
ASSERT(request2.numNotifies == 1);
ASSERT(request2.lastResult == LOCK_OK);
ASSERT(request2.recursiveCount == 1);
ASSERT(lockMgr.unlock(&request1));
ASSERT(lockMgr.unlock(&request2));
}