首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程中CRITICAL_SECTION为什么是24个字节,它到底是啥

2013-02-25 
多线程中CRITICAL_SECTION为啥是24个字节,它到底是啥?小弟我初学多线程,学到临界区中发现有一个CRITICAL_S

多线程中CRITICAL_SECTION为啥是24个字节,它到底是啥?
   小弟我初学多线程,学到临界区中发现有一个CRITICAL_SECTION这个变量,用了一下sizeof发现居然24个字节(vs2010debug环境下),网上查了些相关资料都只是说临界区怎样怎样,这些看了,但这个变量是啥?

typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;

看到这个typedef,那RTL_CRITICAL_SECTION又是啥,有点晕啊,请各位指教,谢谢!多线程中CRITICAL_SECTION为什么是24个字节,它到底是啥
[解决办法]
//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设计就是作轻量级的同步操作
先尝试自旋,超过一定量,才等待事件挂起线程

热点排行