研究Windows核心编程也很有一阵子了,对于多线程同步这个问题渐渐有一点自己的理解。
我觉得搞清楚这个问题必须弄清楚以下几个概念:
1.并发
2.共享
3.加锁
先说并发,这个要清楚线程调度是个怎么回事,一句话概括就是:处于相同优先级的可调度状态的线程是并发执行的。
再说共享,进程类的任何线程都可以访问进程资源(包括全局对象==)。
然后是加锁,先要知道为什么要加锁,原因就是并发的线程访问相同的资源,加锁的目地就是 让先访问资源的线程访问完毕之后再交给其他线程访问。
综合而言:由于线程的并发性+资源的共享性 ===》》 导致提出加锁的概念
换句话说,加锁实际上是让访问共享资源的线程之间失去并发性。