Joh*_*0te 15 c unix linux timer
我总是注意到人们对在UNIX中创建计时器的不同方式有不同的反应.
我知道在UNIX中每隔X秒执行一次事件的几种不同方法:
有人可以提供一些示例代码,使用"最佳"或最有效的方式来执行计时器,并说明为什么它是最好的?我想使用最有效的机制,但我不确定它是哪一个!
出于我们的目的,只是假装你正在打印"Hello World!" 每10秒一次.
注意:我没有TR1/Boost/etc.在这个系统上,所以请保持它直接进行C/C++和UNIX系统调用.对不起,第一次没有提到:)
这取决于你想做什么.一个简单的睡眠就足以让你在"Hello"之间等待10秒的简单例子,因为你可能暂停你当前的线程直到你的时间到了.
如果您的线程在您等待期间实际执行某些操作,事情会变得更复杂.如果您正在响应传入的连接,那么您将select
在这种情况下使用select
语句超时对您的内务管理最有意义.
如果你正在紧密循环处理东西,你可以定期轮询一个开始时间,看看你的10秒是否已经启动.
alarm
使用适当的信号处理程序也可以正常工作,但在信号处理程序中可以执行的操作存在严重限制.大多数情况下,它涉及设置一个需要经常轮询的标志.
简而言之,它归结为您的线程如何处理事件.