一提到线程同步,就会提到锁,作为线程同步的手段之一,锁总是饱受质疑.一方面锁的使用很简单,只要在代码不想被重入的地方(多个线程同时执行的地方)加上锁,就可以保证无论何时,该段代码最多有一个线程在执行:另一方面,锁又不像它看起来那样简单,锁会造成很多问题:性能下降.死锁等.使用volatile关键字或者Interlocked中提供的方法能够避开锁的使用,但是这些原子操作的方法功能有限,很多操作实现起来很麻烦,如无序的线程安全集合.我在本系列的序中已经介绍了锁的总类,自旋锁.内核锁(内核构造).混合…