我对用户空间中的计时器概念有疑问。
我正在尝试编写一个应用程序代码,我想在其中运行一个计时器以获得某个超时值。在我的应用程序中,有一些共享变量可以在同一应用程序的计时器处理程序内部或计时器上下文外部进行修改。如果我实现了一个 mutex
来保护共享变量,而定时器之外的应用程序正在持有它并修改共享变量。此时,计时器到达并尝试获取互斥量,它会进入 sleep
直到应用程序释放互斥量还是会死锁?
谢谢!
最佳答案
如果一个互斥量已经被锁定,试图锁定它将会被阻塞。如果计时器与持有锁的线程在同一个线程中,则该线程将被阻塞并且它永远无法解锁互斥锁,因此您将死锁。如果它们在不同的线程中,只有计时器线程会阻塞,其他线程将能够继续并最终解锁互斥量,这将允许计时器线程继续。
关于用户空间和共享变量中的 Linux 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005597/