Windows 中的过程同步
Windows 操作系统是一个多线程内核,为实时应用程序和多处理器提供支持。在单处理器系统上,Windows 提供中断掩码以保护对全局资源的访问。它使用旋转锁保护对全局资源的访问。内核仅使用旋转锁保护短代码段,如 Solaris。内核确保线程在持有旋转锁时永远不会被抢占。
Windows 根据各种不同的机制(包括互斥体、信号量、事件和定时器)提供分派器对象进行线程同步。系统通过要求线程获得互斥体的所有权来访问数据,并在完成后释放所有权,从而保护共享数据。
事件充当条件变量,在所需条件发生时通知等待线程。
定时器用于在时间到时通知一个或多个线程。
分派器对象可以处于已发出信号状态或未发出信号状态。
已发出信号状态表示对象可用,并且线程在获取对象时不会阻塞。
未发出信号状态表示对象不可用,并且线程在尝试获取对象时会阻塞。
下图显示了互斥锁分派器对象的状态转换 -
图:互斥分派器对象
ADVERTISEMENT