我想在Vala中制作一个守护进程,每隔X秒执行一次任务. 我想知道哪种方式最好: Thread.usleep()或Posix.sleep() GLib.MainLoop GLib.Timeout 其他? 当它什么都不做的时候我不希望它吃掉太多的资源
我想知道哪种方式最好:
> Thread.usleep()或Posix.sleep()
> GLib.MainLoop GLib.Timeout
>其他?
当它什么都不做的时候我不希望它吃掉太多的资源.
如果您在系统调用中花费时间,那么从性能角度来看,不会有任何明显差异.也就是说,使用MainLoop方法可能有两个原因:>您将需要设置信号处理程序,以便您的守护程序在给出SIGTERM时可以立即死亡.如果你通过Posix.signal绑定SIGTERM来调用主循环上的quit,这可能会比检查睡眠成功更可读.>如果您决定增加复杂性,MainLoop将使其更加直接.