我怎样才能拥有更瘦的pthreads?

时间:2014-07-15 01:21:50

标签: c memory-management pthreads ncurses

我有一个非常基本的ncurses程序来监控机器统计信息并启动远程xterms。它只是整天坐在窗户上,帮助我选择一台负载不重的机器。它工作正常,我非常喜欢它。但它真的很胖。我认为,它比它需要的要胖得多。

该计划基本如下:

void * run(void * task) {
    // once per minute:
        popen( /* stats checking command */ )
        // save output to global var
        pclose
}

int main() {
    // setup ncurses with halfdelay
    for ( /* each machine */ ) 
        pthread_create(somethread, NULL, run, (void *)somestruct);
    while ( ( c = getch() ) != 'q' )
        for ( /* each machine */ ) 
            // print machine stats
        // maybe launch an xterm
    // die gracefully
}

如上所述,它运作得很好。问题是,每个线程都将所有的ncurses baloney藏在私人内存中,导致一个非常胖的进程,带来了大量的浪费。

那么问题是:我如何重新编写或重新安排这个程序,以便每个pthread都不会带来所有不必要的ncurses东西?

附带问题:你必须真的把它卖给我,但有人知道比ncurses更好的方法吗?我希望终端窗口中的固定位置的统计数据,而不是滚动文本。

0 个答案:

没有答案