我打算使用timerfd_create
以C语言编写一个小型计时器库。使用select实现计时器
这个库的基本用户将有两个线程
- 应用程序线程
- 计时器线程
将会有这两个线程之间的队列,以便每当应用程序要启动一个计时器,它会将消息推送到计时器线程将读取的队列中,并为其创建一个FD并将其放入select
。
上述方法的问题在于,作为单线程的计时器线程将在select
系统调用中被阻止,并且不知道是否有消息已发布到他的接收队列中以启动计时器。
解决此问题的一种方法是让选择超时每“滴答”一次,然后检查队列中的消息。他们是更好的方法来做到这一点? 我也想过在每次应用程序在select
队列中放置一条消息以中断select
时引发中断。这对多线程应用程序有效吗?
平台:Unix
你计划如何计时器和应用程序线程交互? – 2010-08-18 09:22:04
通过两个线程之间的队列 – 2010-08-18 13:12:59
请参阅:https://stackoverflow.com/q/2328127/1153319 – 2017-11-04 05:12:42