Linux user-space 和共享变量中的计时器

Linux timer in user-space and shared variables

我对用户 space 中的计时器概念有疑问。

我正在尝试编写一个应用程序代码,我想 运行 一个定时器以获得某个超时值。在我的应用程序中,有一些共享变量可以在同一应用程序的计时器处理程序内部或计时器上下文外部进行修改。如果我实现一个 mutex 来保护共享变量,并且计时器外部的应用程序持有它并修改共享变量。这时候定时器到了,试图去抢mutex,会不会一直sleep直到应用程序释放mutex,还是会死锁?

谢谢!

如果互斥锁已经被锁定,尝试锁定它将会被阻止。如果计时器与持有锁的线程在同一个线程中,则该线程将被阻塞并且它永远无法解锁互斥锁,因此您将死锁。如果它们在不同的线程中,只有计时器线程会阻塞,其他线程将能够继续并最终解锁互斥量,这将允许计时器线程继续。