同 volatile 的可见性作用雷同,Interlocked 可为多个线程共享的变量提供原子操作,这个类是一个静态类,它提供了以线程安全的方式递增、递减、交换和读取值的方法。
它的原子操作基于 CPU 本身,非壅闭,所以也不是真正意义上的锁,当然服从会比锁高得多。
锁模式
接下来正式介绍各种锁之前,先了解下锁模式——锁分为内核模式锁和用户模式锁,后面也有了混合模式锁。
内核模式就是在系统级别让线程制止,收到信号时再切回来继续干活。该模式在线程挂起时由系统底层负责,几乎不占用 CPU 资源,但线程切换时服从低。
用户模式就是通过一些 CPU 指令大概死循环让线程一直运行着直到可用。该模式下,线程挂起会一直占用 CPU 资源,但线程切换非常快。
长时间的锁定,优先使用内核模式锁;假如有大量的锁定,且锁定时间非常短,切换频繁,用户模式锁就很有用。另外内核模式锁可以实现跨进程同步,而用户模式锁只能进程内同步。
本文中,除文末轻量级同步原语为用户模式锁,其它锁都为内核模式。
lock 关键字