一个线程可以在持有锁的情况下进行上下文切换吗?

时间:2014-07-10 01:16:23

标签: multithreading

当线程持有锁并因此阻止其他线程时,如何处理上下文切换?我希望这是一个非常普遍的问题。

2 个答案:

答案 0 :(得分:2)

在先发制人的多任务系统中,您无法阻止自己在握住锁定时被切换。但由于其他等待锁定的东西(假设它不是自旋锁)无法切换,这通常不是问题。

使用自旋锁几乎总是一个坏主意。有一些合法的情况,如果你长时间锁定,情况会很严重;您可以通过确保在最短的时间内保持锁定以及在保持锁定时不会阻止任何操作来管理此事。

答案 1 :(得分:0)

被阻止的线程不会运行,最终持有锁的线程再次变为活动状态,最终释放锁定。除了多线程代码所需的常规细节之外,您不必做任何特别的事情。