死锁会导致进程占用大量CPU使用率,还是这两个进程都“睡眠”,等待另一个进程完成?
我正在尝试在Linux系统上调试用C ++编写的多线程程序。我已经注意到某个特定进程的CPU利用率过高,并且想知道是否可能是由于死锁问题引起的。我已经确定一个进程持续使用比我预期更多的CPU(使用top),并且该进程可以运行,但是运行缓慢。如果死锁导致进程进入休眠状态,并且不会导致CPU使用率过高,那么至少我知道这不是死锁问题。
死锁通常不会导致较高的CPU使用率,至少如果死锁发生在由OS支持的同步原语中,则进程不会等待,而死锁通常不会造成高CPU使用率。
如果通过无锁同步机制(例如带有空闲循环的比较交换)发生死锁,则CPU使用率将上升。
此外,存在活锁的概念,当具有多个线程的程序无法满足某些条件(取决于线程之间的交互)而无法进入某些预期状态时,即使没有一个线程在显式等待,这种情况也会发生为了某件事。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句