gpt4 book ai didi

c++ - 如果在获得互斥锁后发生中断会怎样

转载 作者:太空狗 更新时间:2023-10-29 11:44:56 25 4
gpt4 key购买 nike

我有一个多线程 C/C++ 程序,该程序非常频繁地为读取和写入请求提供服务。出于同步目的,我使用互斥体进行锁定和解锁。所有读写线程在执行它们的操作之前都获取锁。如果一个线程获得锁并且在释放锁之前发生中断会怎样?线程会恢复执行还是我必须手动处理它?<​​/p>

最佳答案

用户端锁,包括互斥体,不会阻止中断。这很重要,因为 Mutex 通常可用于保护从磁盘上的文件读取,或保护从网络接收数据包等,其中结果依赖于中断。

本质上,如果有中断,“什么都不会”发生。中断由操作系统处理,就像任何其他时间一样。在这种情况下,您的程序无需执行任何操作,如果发生这种情况,只需多花几微秒或几毫秒即可执行您为任务编写的程序。

一些内核端锁,例如 SpinLocks 确实会阻止中断(在该处理器内核上)以确保在此过程中不会调度其他进程/线程。在这些情况下内核可以使用哪些功能也有限制 - 例如,在期间不可能调用阻塞功能(例如 sleep ,等待事件或文件读取或文件写入)这一次,因为这可能会导致内核锁定。

关于c++ - 如果在获得互斥锁后发生中断会怎样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22218365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com