我有一个捕获程序,另外捕获数据并将其写入文件也会打印一些统计信息。打印统计信息的函数
static void report(void)
{
/*Print statistics*/
}
使用每秒过期的ALARM大致每秒调用。所以程序就像
void capture_program()
{
while()
{
/*Main loop*/
if(doreport)
report();
}
}
计时器到期时设置doreport
标志。如果设置了此标志,则调用report()
清除标志。
现在我的问题是
我打算将报告功能移到一个单独的线程中。主要动机是 这样做是报告函数执行一些锁定下的代码。如果另一个进程持有锁,那么这将阻止导致捕获进程丢弃数据包。所以我认为移动报告可能是一个更好的主意一个帖子。
2)如果我要在一个单独的线程中实现报告,我是否仍然必须使用 线程内的定时器每秒都要做报告吗?
OR
有没有更好的方法通过每1秒间隔唤醒线程
来做到这一点答案 0 :(得分:1)
将报告功能移动到单独的线程有什么好处?
如果您的报告功能很简单,例如,您只需要打印一些东西,我就不会认为单独的线程会有很多帮助。
如果我要在一个单独的线程中实现报告,我是否仍然必须在线程中使用定时器来每秒进行报告?
你不需要计时器,你可以每秒睡觉,就像这样:
static void report(void)
{
while (1) {
/*Print statistics*/
sleep(1);
}
}