std :: lock_guard可以中断吗?

时间:2016-10-10 21:06:11

标签: c++ multithreading c++11 locking

如果我在lock_guard下有一些代码,如:

std::thread t([&]()
{
    std::lock_guard<std::mutex> lock(m);
    // some simple operations
});

我是否有保证&#34;某些操作&#34;永远不会在t线程正在运行的这个核心CPU上被中断?在lock_guard之后可以进行上下文切换吗?

2 个答案:

答案 0 :(得分:1)

会有上下文切换,但保证锁定后面的所有其他线程都会被阻止。

答案 1 :(得分:0)

不是,受互斥锁保护的关键部分不会以实时优先级运行,除非您明确要求它这样做,这是使用标准C ++库无法完成的。内核仍然可以调度另一个没有等待互斥锁的线程(在同一个进程中,或者其他一些进程)。只能通过特定于操作系统的系统调用来设置实时优先级。