Реферат: Критические секции
{
ATLTRACE("Critical section timeout (%u msec):"
" tid 0x%04X owner tid 0x%04X\n"
"Owner lock from %hs line %u, waiter %hs line %u\n"
, DEADLOCK_TIMEOUT
, ::GetCurrentThreadId(), pcs->OwningThread
, pcs->m_azFile, pcs->m_nLine, azFile, nLine);
}
}while(WAIT_TIMEOUT == dwWait);
ATLASSERT(WAIT_OBJECT_0 == dwWait);
}
// Выставляемсобытиевактивноесостояние
static inline VOID _UnWaitCriticalSectionDbg(LPCRITICAL_SECTION pcs)
{
HANDLE sem = _CriticalSectionGetEvent(pcs);
BOOL b = ::SetEvent(sem);
ATLASSERT(b);
}
// Инициализируем критическую секцию.
inline VOID InitializeCriticalSectionDbg(LPCRITICAL_SECTION_DBG pcs)
{
// Пусть система заполнит свои поля
InitializeCriticalSection(pcs);
// Заполняем наши поля
pcs->m_nLine = 0;
pcs->m_azFile = NULL;
}
// Освобождаем ресурсы, занимаемые критической секцией
inline VOID DeleteCriticalSectionDbg(LPCRITICAL_SECTION_DBG pcs)