首页 > 编程知识 正文

indefinite leave to remain,critical什么意思

时间:2023-05-04 10:07:29 阅读:107754 作者:4620

EnterCriticalSection和LeaveCriticalSection是干嘛用的?如果多个线程操作相同的数据(内存块),通常需要按顺序访问。 否则,数据会混乱,无法控制数据,成为随机变量。 要解决此问题,必须引入互斥变量,以允许每个线程按顺序访问变量。 这两个函数实现了这样的功能。

作用域:不同线程之间代码段的

什么是关键部分? 关键部分是一种轻量级机制,允许在给定时间内只有一个线程执行特定的代码段。 通常,临界区域用于更改全局数据(如集合类)。 事件、多用户终端可执行文件和信号量也用于多线程同步,但关键部分与它们不同,它们并不总是执行到内核模式的控制转换,而且这种转换成本高昂。 要获得未使用的临界区域,实际上只需对内存进行少量更改,其速度非常快。 只有在尝试获取被占用的极限空间时,才会跳转到内核模式。 此轻量级特性的缺点是关键节只能用于同步同一进程中的线程。

在不使用关键节的理想情况下,EnterCriticalSection调用速度非常快,因为它只是读取和更改用户模式内存中的内存位置。

如果一个临界区域中有多个线程被阻止,则当另一个线程释放该临界区域时,只有一个线程获得该临界区域。

临界区API:初始化和删除临界区:初始化临界区(deletecriticalsection )临界区的两个操作原语:企业临界区

对于临界区操作,(EnterCriticalSection )操作采用主动进入临界区。 也就是说,不能进入的时候,在进入之前会继续积极地尝试进入。 这种积极的进入方式叫做自旋。 被动方式:无法获取后,进入队列,待获取的对象释放后,系统唤醒等待线程的方式称为被动方式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。