用户空间和共享变量中的 Linux 计时器

标签 linux timer

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

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

谢谢!

最佳答案

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

关于用户空间和共享变量中的 Linux 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005597/

相关文章:

linux - 为什么日志文件的扩展名为 swp?

linux - 在 .fa header id 之后插入连续数字

c++ - 在 Linux 中的 Eclipse 上编译 glew

linux - 无法连接到我可以 ping 通的计算机

javascript - 计时器在 ReactJS 中不倒计时

Java TimerTask 不取消

c - Linux 上的 AzSmb 源代码编译错误?

qt - 如何在Qt中发出一定间隔的信号?

ios - didRangeBeacons 委托(delegate)调用 CLProximityNear 和 CLProximityFar 太快了

.net - 可变间隔定时器