critical section object 看了msdn,还不是太理解。谁详细解释一下,干什么用的,工作机制,用法。谢了先

解决方案 »

  1.   

    临界区。处理多线程之间的同步问题。
    如果两个线程需要访问共享资源,比如一块内存,一个文件,一个数据结构
    时,这时需要使用同步机制对资源进行保护,否则会引起意想不到的错误,
    比方说,
    线程1
    a = 1;
    printf("%d",a);
    线程2
    a = 5;
    printf("%d",a);
    如果在线程1为a赋值后,但还未执行printf时,线程2这时执行了a=5,当
    线程1执行printf时,就会得到结果5,而不是2.
    而如果使用临界区保护后,就会避免这种情况。
    这样使用,先初使化.
    CRITICAL_SECTION crisec_a;
    InitializeCriticalSecion(&crisec_a);线程1
    EnterCriticalSection(&crisec_a);
    a = 1;
    printf("%d",a);
    LeaveCriticalSection(&crisec_a);
    线程2
    EnterCriticalSection(&crisec_a);
    a = 5;
    printf("%d",a);
    LeaveCriticalSection(&crisec_a);最后需要清除
    DeleteCriticalSection(&crisec_a);