core--线程同步

【同步(tóng bù)synchronous;sync;synchronism;synchronization 指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。】这是百度百科对“同步”的解释。请注意随时间变化这个词。请看下面的解释:

小伙伴A和大伙伴B,他们本来是一个个独立的个体,如果他们合作完成一个时间,比如要完成一项制造与消费的社会活动,那么他们的事件执行顺序必须是:

B生产面包---------生产完成

A一直等待------------------开始购买然后消费

这里A 等待B的这种机制就叫做同步。A必须等到B生产完成之后。

在多线程的概念里,我们抽象的将两个或者多个线程认同为一个团队,共同来执行某个任务。在完成任务的过程中线程之间存在时间上的先后顺序。所以才需要一种机制来支持等待,通知等活动。在windows上面,这种机制就叫做同步,其而且同步的机制有两种:

1.用户模式下的同步

2.内核对象的同步

从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有运行在ring0层的代码可以直接对物理硬件进行访问。由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的两个运行级别。一个被称为内核模式,对应80x86的ring0层,是操作系统的核心部分,设备驱动程序就是运行在该模式下;另一个被称为用户模式,对应80x86的ring3层,操作系统的用户接口部分(就是我们通常所说的win32 API)以及所有的用户应用程序都运行在该级别。操作系统对运行在内核模式下的代码是不设防的,所以不管是建设还是破坏内核模式下的编程都是值得去研究的。

原文地址:https://www.cnblogs.com/pavkoo/p/3413114.html