2010-02-26 52 views

回答

5

這是從我的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

你爲什麼不檢查頭文件?
退房WINNT.H,看看你會發現什麼:)

(假設你有Windows的C++文件)

通常該結構包含:

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

編輯:命令像sizeof(CRITICAL_SECTION)會顯示大小。

1

在這裏您可以找到詳細的說明此MSDN雜誌文章中的CRITICAL_SECTION結構的示例:

Break Free of Code Deadlocks in Critical Sections Under Windows


更新:上面的鏈接不再起作用。這是目前所做的Archive.org link

+1

請注意,只有鏈接的答案是不鼓勵的,所以答案應該是搜索解決方案的終點(而另一個引用的中途停留時間往往會過時)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – kleopatra 2013-08-10 11:46:08

+1

例如。由於鏈接隨着時間的推移而斷裂,因此不鼓勵鏈接回答。上面的鏈接不再有效。但這[Archive.org鏈接](https://web.archive.org/web/20150419055323/https://msdn.microsoft.com/en-us/magazine/cc164040.aspx)目前的作品(在本文)。我已經更新了答案。 – 2016-06-21 21:19:31

+0

雖然此鏈接可能回答此問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18951926) – plamut 2018-02-27 17:54:50