Реферат: Блокировки в MS SQL Server 2000
EnterCriticalSection(&update);
// Проверка на монопольную блокировку
EnterCriticalSection(&exclusive);
// Снимаемблокировкуобновления
LeaveCriticalSection(&update);
// Вошлибольшеодногораза
if (exclusive.RecursionCount > 1)
LeaveCriticalSection(&exclusive);
}
void RemoveSharedLock()
{
SetEvent(hShared);
}
void RemoveAllLocks()
{
RemoveSharedLock();
// Если была установлена блокировка обновления - снимаем
if (update.OwningThread == (HANDLE)GetCurrentThreadId())
LeaveCriticalSection(&update);
// Если была установлена монопольная блокировка - снимаем
if (exclusive.OwningThread == (HANDLE)GetCurrentThreadId())
LeaveCriticalSection(&exclusive);
}
int value;
CRITICAL_SECTION update;
CRITICAL_SECTION exclusive;
HANDLE hShared;
static HANDLE hMutex;
};