std::lock_guard可以被中断吗?
Can std::lock_guard be interupted?
如果我在lock_guard下有一些代码,比如:
std::thread t([&]()
{
std::lock_guard<std::mutex> lock(m);
// some simple operations
});
我是否保证"某些操作"永远不会在t
线程正在运行的这个核心cpu上中断?lock_guard之后可以有上下文切换吗?
会有上下文切换,但可以保证所有其他线程都将被锁在后面。
不,受互斥锁保护的临界区不会以实时优先级运行,除非您显式地请求它这样做,这是使用标准c++库无法完成的。内核仍然可以调度另一个没有等待互斥锁的线程(在同一个进程中,或者其他进程中)。设置实时优先级只能通过特定于操作系统的系统调用完成。
相关文章:
- 类成员和中断
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 尝试构建"lock-free"数据结构C++
- 我的代码运行良好,但在游戏循环中中断
- 使用带有MCP23017的 pigpio 进行中断读取
- 为什么我在 AVR 中的中断无法正常工作?
- 使用 UDP 中断 while()-循环
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何为伺服电机创建中断或返回值?
- 为什么 c++11 std::lock 和 std::scoped_lock 至少需要 2 个参数?
- 开关:无外壳中断
- 如何使用中断停止循环?
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 在 Ubuntu 中编译 SuiteSparse,在安装 CHOLMOD 时中断
- 在PROGMEM中添加更多数据会中断Arduino Mega 2560上的SPI传输
- 附加到 gdb 会中断并且不会继续该过程
- 使用 shared_ptr 在中断时结束多线程循环