Что содержит Win32 CRITICAL_SECTION? - PullRequest
4 голосов
/ 26 февраля 2010

Какие данные содержит Win32 CRITICAL_SECTION и насколько он велик?

Это недокументировано и предположительно зависит от реализации, но мне интересно знать

Ответы [ 3 ]

7 голосов
/ 26 февраля 2010

Это из моей установки Windows Vista SDK:

WinNT.h:

typedef struct _RTL_CRITICAL_SECTION {
    PRTL_CRITICAL_SECTION_DEBUG DebugInfo;

    //
    //  The following three fields control entering and exiting the critical
    //  section for the resource
    //

    LONG LockCount;
    LONG RecursionCount;
    HANDLE OwningThread;        // from the thread's ClientId->UniqueThread
    HANDLE LockSemaphore;
    ULONG_PTR SpinCount;        // force size on 64-bit systems when packed
} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;

WinBase.h:

typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
4 голосов
/ 26 февраля 2010

Почему вы не проверяете файлы заголовков?
Проверьте WINNT.H и посмотрите, что вы узнаете :)

(при условии, что у вас есть файлы Windows C ++)

Обычно структура содержит:

LONG LockCount;
LONG RecursionCount;
HANDLE OwningThread;
HANDLE LockSemaphore;
DWORD SpinCount;

Редактировать: команда наподобие sizeof(CRITICAL_SECTION) покажет размер.

1 голос
/ 10 августа 2013

Здесь вы можете найти подробное описание структуры CRITICAL_SECTION в этой статье MSDN Magazine:

Освободиться от блокировок кода в критических разделах под Windows


Обновление: вышеуказанная ссылка больше не работает.Вот ссылка Archive.org , которая в настоящее время делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...