Win32 CRITICAL_SECTION包含什么?

时间:2010-02-26 13:49:45

标签: winapi synchronization

Win32 CRITICAL_SECTION包含哪些数据,以及它有多大?

这是没有记录的,可能是具体的实现,但我很想知道

3 个答案:

答案 0 :(得分:7)

这是我安装的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;

答案 1 :(得分:4)

为什么不检查标题文件?
查看WINNT.H,看看你会发现什么:)

(假设您有Windows C ++文件)

通常结构包含:

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

修改: sizeof(CRITICAL_SECTION)之类的命令会显示大小。

答案 2 :(得分:1)

您可以在此处找到此MSDN杂志文章中CRITICAL_SECTION结构的详细说明:

Break Free of Code Deadlocks in Critical Sections Under Windows


更新:以上链接不再有效。这是目前的Archive.org link