Реферат: Блокировки в MS SQL Server 2000
hShared = CreateEvent(NULL,FALSE,TRUE,NULL);
}
void TestShared(int level)
{
// Проверка на монопольную блокировку
EnterCriticalSection(&exclusive);
// Устанавливаем блокировку обновления
if (level == UPDLOCK){
EnterCriticalSection(&update);
// Вошлибольшеодногораза
if (update.RecursionCount > 1)
LeaveCriticalSection(&update);
}
else if (level != XLOCK){
// Устанавливаем разделяемую блокировку
// только если не была установлена блокировка обновления или
// монопольная блокировка
if (update.OwningThread != (HANDLE)GetCurrentThreadId() &&
exclusive.RecursionCount == 1)
ResetEvent(hShared);
// Снимаеммонопольнуюблокировку
LeaveCriticalSection(&exclusive);
}
// Если указан XLOCK монопольная блокировка остается
}
void TestExclusive()
{
// Проверка на разделяемую блокировку
WaitForSingleObject(hShared,INFINITE);