Win32 CRITICAL_SECTION包含哪些数据,以及它有多大?
这是没有记录的,可能是具体的实现,但我很想知道
答案 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。