看一下MSDN的帮助,这是加锁方法中最很简单的一个了.
先声明一个CCriticalSection的变量,在你需要加锁的代码的地方Lock(),然后解锁的地方UnLock()就可以了.

解决方案 »

  1.   

    就是用api中的一些函数去除并行问题,其中最基本的就是临界扇区,其他还有互斥体,信号和事件
    比如:在线程中要用执行std::count<<"hello"<<::GetCurrentThreadId()<<std::endl;
    那么在有许多线程同时运行时,就会出现A线程还没有执行完B就开始显示了,这样出现了错误的结果,这时我们可以先定一个临界扇区:
     static CRITICAL_SECTION sm_cs;
     ::InitializeCriticalSection(&sm_cs); //初始化
    然后在需要同步的地方用
    ::EnterCriticalSection(&sm_cs);//只允许一个线程进入此临界扇区
    std::count<<"hello"<<::GetCurrentThreadId()<<std::endl;
    ::LeaveCriticalSectioN(&sm_cs);//退出临界扇区,以便让其他的线程可以进入