这个问题一直困扰着我。
比如两个线程同时(在多处理器的主机上)调用EnterCriticalSection,
又或者同时调用InterlockedCompareExchange等等,
那么两个线程是同时执行还是一个被阻塞呢?
如果是一个被阻塞的话,那么系统又是怎么能够让一个阻塞呢?
是不是要用到一些硬件支持阿?

解决方案 »

  1.   

    用EnterCriticalSection来做线程同步就可以啦,是用户级别的同步对象,速度比较快,当一个线程进入后,其他线程需要进入,系统会阻塞其他线程,等到那个线程退出后才可以进入
      

  2.   

    这个问题事关WINDOWS的实现,请致函比尔-盖茨。
    个人意见是同一进程内的线程会阻塞,但其它进程不影响。
      

  3.   

    呵呵,当然后阻塞的。别忘记了,os有调度程序,不用硬件。只要使用将cpu中的寄存器代码计数改一下就OK了。当然,不要这么简单,但是基本思路是这样。