【发布时间】:2010-08-17 19:34:18
【问题描述】:
我打算使用timerfd_create 用 C 语言编写一个小型计时器库。
这个库的基本用户会有两个线程
- 应用线程
- 定时器线程
这两个线程之间会有一个队列,因此每当应用程序想要启动一个计时器时,它会将一条消息推送到队列中,然后计时器线程将读取该消息并为其创建一个 FD 并将其放入@987654323 @。
上述方法的问题是定时器线程作为单线程会在select系统调用中被阻塞,并且不知道消息是否已经在他的接收队列中发布以启动定时器。
解决此问题的一种方法是让选择在每个“滴答”中超时,然后检查队列中的消息。他们是更好的方法吗?
每次应用程序将消息放入select 队列以中断select 时,我还考虑引发中断。这是否适用于多线程应用程序?
平台:Unix
【问题讨论】:
-
您打算如何处理定时器和应用程序线程的交互?
-
通过两个线程之间的队列