SpinLock & Interlocked

   操作系统为了实现对共享资源的同步,需要一定的同步机制来保证,在编写应用程序的时候,我们可以使用操作系统提高的上层同步机制。在windows系统上,这些同步机制包括Mutex,Event,Semaphore,CriticalSection等。对于单个变量的同步,为了编程简单,我们可以使用Interlocked*类方法,包括InterlockedExchangeAdd,InterlockedIncrement,InterlockedDecrement,InterlockedExchange,InterlockedCompareExchange,
这五种方法。
   但是以上的这些方法在SMP多处理器系统上并不安全,因为在多处理器系统上,进程/线程的调度是在多个处理器上独立进行的。 所以我们需要另一种通过CPU底层硬件来保证的同步机制。Spinlock利用CPU的Test and Set指令,或者另一个更位aggresive的指令cli,来disable所有CPU上的中断。
    更多的阅读参考MSDN和下面的链接:
[url]http://ecos.sourceware.org/docs-latest/ref/kernel-spinlocks.html[/url]
[url]http://www.linuxgrill.com/anonymous/fire/netfilter/kernel-hacking-HOWTO-5.html[/url]
 

你可能感兴趣的:(操作系统,职场,休闲,spinlock,Interlocked)