原子操作不是能定义的。
一般CPU的指令系统都会有一条或若干条指令实现test then lock.
比如: xadd

解决方案 »

  1.   

    能在vc中加汇编语言实现吗?critical_section只能保证一段代码不在多个线程同时执行,但不能这段代码能独占资源执行完毕。
      

  2.   

    critical_section只能保证一段代码不在多个线程同时执行,但不能保证这段代码能独占资源执行完毕。CComAutoCriticalSection cs; //Global variant////////////////////////////////
    //foo
    ////////////////////////////////
    void foo()
    {
        cs.Lock();
        DoSomething();  //确保DoSomething()函数不会被同时执行
                        //但正在执行DoSomething()时,如果有优先级
                        //更高的线程要求使用cpu资源时,DoSomething()
                        //会中断执行
        cs.UnLock();
    }
      

  3.   

    创建一个命名的互斥Mutex, 就可以作到
      

  4.   

    去看本《操作系统》吧。
    如果直接用VC-MFC中的类来实现几乎不可能。因为封装得太高了。
    在VC中嵌入ASM吧。