2016-10-10 78 views
1

如果我下像lock_guard有一些代码:std :: lock_guard可以被中断吗?

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

我有一个保证,“一些行动”将永远不会对t线程运行这个核心CPU中断? lock_guard之后是否可以切换上下文?

+0

你对thread和mutex有什么想法? –

+0

您的*程序*不会中断操作。 –

+0

@Biagio Festa。你问我?好的,我会回答......这种结构保证在“一些简单的操作”过程中不会出现竞态条件,但是我想知道线程是否被阻塞(我的意思是,在这个CPU核心上执行操作不会中断 - 没有上下文切换) – peter55555

回答

1

将会出现上下文切换,但可以保证所有其他线程都会被锁住。

0

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

相关问题