如果我在lock_guard下有一些代码,如:
std::thread t([&]()
{
std::lock_guard<std::mutex> lock(m);
// some simple operations
});
我是否有保证&#34;某些操作&#34;永远不会在t
线程正在运行的这个核心CPU上被中断?在lock_guard之后可以进行上下文切换吗?
答案 0 :(得分:1)
会有上下文切换,但保证锁定后面的所有其他线程都会被阻止。
答案 1 :(得分:0)
不是,受互斥锁保护的关键部分不会以实时优先级运行,除非您明确要求它这样做,这是使用标准C ++库无法完成的。内核仍然可以调度另一个没有等待互斥锁的线程(在同一个进程中,或者其他一些进程)。只能通过特定于操作系统的系统调用来设置实时优先级。