C程序中单独线程的优点

时间:2014-05-23 01:19:34

标签: c multithreading timer pthreads

我有一个捕获程序,另外捕获数据并将其写入文件也会打印一些统计信息。打印统计信息的函数

static void report(void)
{
         /*Print statistics*/
}
使用每秒过期的ALARM大致每秒调用

。所以程序就像

void capture_program()
{


            while()
            {
                     /*Main loop*/
                     if(doreport)
                          report();
            }
}

计时器到期时设置doreport标志。如果设置了此标志,则调用report()清除标志。

现在我的问题是

我打算将报告功能移到一个单独的线程中。主要动机是 这样做是报告函数执行一些锁定下的代码。如果另一个进程持有锁,那么这将阻止导致捕获进程丢弃数据包。所以我认为移动报告可能是一个更好的主意一个帖子。

2)如果我要在一个单独的线程中实现报告,我是否仍然必须使用 线程内的定时器每秒都要做报告吗?

                         OR

有没有更好的方法通过每1秒间隔唤醒线程

来做到这一点

1 个答案:

答案 0 :(得分:1)

  

将报告功能移动到单独的线程有什么好处?

如果您的报告功能很简单,例如,您只需要打印一些东西,我就不会认为单独的线程会有很多帮助。

  

如果我要在一个单独的线程中实现报告,我是否仍然必须在线程中使用定时器来每秒进行报告?

你不需要计时器,你可以每秒睡觉,就像这样:

static void report(void)
{
    while (1) {
        /*Print statistics*/
        sleep(1);
    }
}