多线程中CRITICAL_SECTION为啥是24个字节,它到底是啥?
小弟我初学多线程,学到临界区中发现有一个CRITICAL_SECTION这个变量,用了一下sizeof发现居然24个字节(vs2010debug环境下),网上查了些相关资料都只是说临界区怎样怎样,这些看了,但这个变量是啥?
typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
看到这个typedef,那RTL_CRITICAL_SECTION又是啥,有点晕啊,请各位指教,谢谢!
[解决办法]
//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;
自旋锁和信号量的结合体
[解决办法]
LZ上是对应的结构体定义,计算一下就知道了,LZ
[解决办法]
恩。。严格的说是个事件,不是信号量
CRITICAL_SECTION设计就是作轻量级的同步操作
先尝试自旋,超过一定量,才等待事件挂起线程