Vala中的高效守护进程

5 performance daemon vala

我想在Vala中制作一个守护进程,每隔X秒执行一次任务.我想知道哪种方式最好:

  1. Thread.usleep()或Posix.sleep()
  2. GLib.MainLoop + GLib.Timeout
  3. 其他?

当它什么都不做的时候我不希望它吃掉太多的资源.

apm*_*ell 7

如果您在系统调用中花费时间,那么从性能角度来看,不会有任何明显差异.也就是说,使用MainLoop方法可能有两个原因:

  1. 您将需要设置信号处理程序,以便您的守护程序在给予SIGTERM时可以立即死亡.如果你quit通过绑定SIGTERMvia 调用你的主循环Posix.signal,这可能是一个更可读的代码片段,而不是检查睡眠是否成功.

  2. 如果您决定增加复杂性,MainLoop将使其更加直接.